Описание тега parametric-polymorphism
In computer science, polymorphism is a programming language feature that allows values of different data types to be handled using a uniform interface. The concept of parametric polymorphism applies to both data types and functions.
2
ответа
Как работает List.max<'T>?
Из документов MSDN, подпись List.max является: List.max : 'T list -> 'T (requires comparison) Мои вопросы: Как компилятор статически проверяет, что 'T поддерживает операцию сравнения? Является requires ключевое слово для указания ограничений типа…
11 сен '11 в 10:01
3
ответа
Есть ли в Haskell автоматический способ запоминания глобальных полиморфных значений?
Полиморфные "константы", вроде 5 :: Num a => a, на самом деле это не константы, а функции аргумента словаря. Следовательно, если вы определите primes :: Num n => [n] primes = ... Плохой пример, конечно, здесь нет веских причин для того, чтобы …
31 июл '14 в 11:30
2
ответа
C программирование: void* - Почему не параметрический полиморфизм?
Почему неправильно говорить, что мы можем реализовать параметрический полиморфизм в C-программировании с помощью void*? Профессор поднял вопрос и никогда не отвечал. Я считаю, что пустота * на самом деле является чем-то очень низким уровнем, который…
17 дек '12 в 10:44
1
ответ
Документация по полиморфным функциям в Google Apps Script
Я хочу, чтобы моя библиотечная функция работала двумя способами, в зависимости от того, был ли предоставлен второй параметр.Например: function sheet_to_dict(a, b) { var array = ( b ? SpreadsheetApp.openById(a).getSheetByName(b) : a ).getDataRange().…
05 май '13 в 22:50
4
ответа
Передайте функцию в качестве параметра и перегрузите ее
Я хочу определить время моих функций, некоторые из них используют до трех параметров. Прямо сейчас я использую тот же код ниже с некоторыми вариациями для трех. let GetTime f (args : string) = let sw = Stopwatch.StartNew() f (args) printfn "%s : %A"…
21 ноя '14 в 00:42
3
ответа
Зависимые типы / Параметрический полиморфизм в Common Lisp?
Я хочу написать некоторый общий код, имеющий дело с группами отражений, и поэтому мне нужно настроить некоторые типы, которые отражают математические структуры (векторное пространство, аффинное пространство,...). Поскольку я действительно хочу точно…
09 янв '17 в 14:56
2
ответа
Внутренняя работа `NextMethod()`
Я пытаюсь понять, как NextMethod() работает. Наиболее подробное объяснение, которое я нашел для системы классов S3, содержится в Статистических моделях Chambers & Hastie (edts.) В S (1993, Chapman & Hall), однако я нахожу часть, касающуюся NextMetho…
05 янв '14 в 10:29
1
ответ
Затмение говорит мне, что Лонг не сравним
Я нахожусь в странной ситуации здесь, а именно затмение говорит мне, что Лонг "не является допустимой заменой ограниченного параметра <T extends Comparable<? super T>>". Любые предложения о том, что может быть причиной? Я вставляю соотве…
26 май '15 в 15:36
1
ответ
Машинописные дженерики. Не удается передать экземпляр B аргументу a: T, где T расширяет B. Почему?
У меня урок: class X<T extends B> [...] // this.p.a :: B | null methodA(a: T):void {[...]} methodB(): void { if(this.p.a){ // :: B this.methodA(this.p.a) // Error Как видите, я передаю T быть любого типа, пока он распространяется B, а затем я …
29 авг '18 в 16:14
1
ответ
Data.Foldable для неупорядоченных контейнеров
Я работаю над языком Haskell-meet-SQL для манипуляций с базой данных и над общей библиотекой классов типов, использующей Hackage везде, где это имеет смысл. Поскольку важной задачей оптимизатора запросов к базе данных является устранение ненужной со…
23 ноя '11 в 20:21
2
ответа
Длина счета Хаскелла с использованием ошибки типа броска фолдера
Попытка реализовать подсчет списков через функцию foldr lengthList = foldr (\x s -> s + 1) 0 выдает следующую ошибку * Ambiguous type variable `t0' arising from a use of `foldr' prevents the constraint `(Foldable t0)' from being solved. Relevant …
17 сен '18 в 13:43
3
ответа
Почему эта функция не может проверить тип?
Во время лекции по функциональному программированию мы увидели следующую функцию Haskell: f :: Bool -> Int -> (a -> Int) -> Int f x y z = if x then y + y else (z x) + (z y) Ожидается, что эта функция не сможет проверить тип. Однако причи…
16 сен '14 в 10:43
3
ответа
Что такое квантификаторы типов?
Многие статически типизированные языки имеют параметрический полиморфизм. Например, в C# можно определить: T Foo<T>(T x){ return x; } На сайте вызова вы можете сделать: int y = Foo<int>(3); Эти типы также иногда пишутся так: Foo :: foral…
08 апр '12 в 10:55
7
ответов
Разница между полиморфизмом и перегрузкой
Я нашел там много определений о полиморфизме и перегрузке. Некоторые люди говорили, что перегрузка является одним из типов полиморфизма. Хотя некоторые люди говорили, что они не одинаковы. Потому что в перегрузке будет размещена только одна функция.…
05 апр '14 в 21:55
1
ответ
Как выражения последовательности и полиморфная рекурсия играют вместе?
Этот проект действительно является источником вопросов для меня. Я уже узнал о полиморфной рекурсии и понимаю, почему это особый случай, и поэтому F# требует полных аннотаций типа. Для обычных функций мне, возможно, понадобится немного поиграть, но…
14 ноя '16 в 12:34
1
ответ
Как преобразовать полиморфное значение в строку?
Я на самом деле ищу функцию с подписью, как 'a -> string который преобразует данный полиморфный тип в строку. Я уже думал о чем-то вроде let func elem = match elem with | int -> string_of_int elem ... Надеюсь, кто-нибудь может мне помочь, спас…
12 дек '18 в 16:40
2
ответа
Вопрос о параметрическом полиморфизме в OCaml
Эта полиморфная функция позволяет нам изменять порядок аргументов произвольной функции с карри: # let flip f x y = f y x ;; val flip : ('a -> 'b -> 'c) -> 'b -> 'a -> 'c То есть flip принимает функцию типа 'a ->' b -> 'c и возвращает …
14 дек '18 в 06:52
1
ответ
Применить полиморфную функцию к двум различным типам входов
Рассмотрим эту функцию: doToBoth f x y = (f x, f y) Работает как положено в простых случаях: doToBoth (2 *) 10 15 == (20, 30) doToBoth head [1,2] [3,4,5] == (1, 3) Тогда я попробовал эти: doToBoth head [1,10,100] "apple" doToBoth pred 2 'b' Я хочу, …
10 янв '19 в 22:43
1
ответ
Приложение с частичной функцией Haskell с $
Я новичок в Haskell и смотрю на простой пример использования приложения функции с $, Это кажется простым - он берет функцию и применяет ее к значению. Так что это имеет смысл: > (+3) $ 2 5 Это также имеет смысл: > ($) (+3) 2 5 Это имеет смысл,…
02 фев '19 в 08:02
2
ответа
Хороший способ для преобразования между специальными полиморфными функциями и параметрическими полиморфными
Мне интересно, есть ли общие способы преобразования между специальными полиморфными функциями и параметрическими полиморфными. Другими словами, учитывая специальную полиморфную функцию, как реализовать ее параметрический аналог? а как же наоборот? п…
12 июл '16 в 10:35