Описание тега 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 -&gt; 'T (requires comparison) Мои вопросы: Как компилятор статически проверяет, что 'T поддерживает операцию сравнения? Является requires ключевое слово для указания ограничений типа…
3 ответа

Есть ли в Haskell автоматический способ запоминания глобальных полиморфных значений?

Полиморфные "константы", вроде 5 :: Num a =&gt; a, на самом деле это не константы, а функции аргумента словаря. Следовательно, если вы определите primes :: Num n =&gt; [n] primes = ... Плохой пример, конечно, здесь нет веских причин для того, чтобы …
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().…
4 ответа

Передайте функцию в качестве параметра и перегрузите ее

Я хочу определить время моих функций, некоторые из них используют до трех параметров. Прямо сейчас я использую тот же код ниже с некоторыми вариациями для трех. let GetTime f (args : string) = let sw = Stopwatch.StartNew() f (args) printfn "%s : %A"…
21 ноя '14 в 00:42
3 ответа

Зависимые типы / Параметрический полиморфизм в Common Lisp?

Я хочу написать некоторый общий код, имеющий дело с группами отражений, и поэтому мне нужно настроить некоторые типы, которые отражают математические структуры (векторное пространство, аффинное пространство,...). Поскольку я действительно хочу точно…
2 ответа

Внутренняя работа `NextMethod()`

Я пытаюсь понять, как NextMethod() работает. Наиболее подробное объяснение, которое я нашел для системы классов S3, содержится в Статистических моделях Chambers & Hastie (edts.) В S (1993, Chapman & Hall), однако я нахожу часть, касающуюся NextMetho…
1 ответ

Затмение говорит мне, что Лонг не сравним

Я нахожусь в странной ситуации здесь, а именно затмение говорит мне, что Лонг "не является допустимой заменой ограниченного параметра &lt;T extends Comparable&lt;? super T&gt;&gt;". Любые предложения о том, что может быть причиной? Я вставляю соотве…
26 май '15 в 15:36
1 ответ

Машинописные дженерики. Не удается передать экземпляр B аргументу a: T, где T расширяет B. Почему?

У меня урок: class X&lt;T extends B&gt; [...] // this.p.a :: B | null methodA(a: T):void {[...]} methodB(): void { if(this.p.a){ // :: B this.methodA(this.p.a) // Error Как видите, я передаю T быть любого типа, пока он распространяется B, а затем я …
1 ответ

Data.Foldable для неупорядоченных контейнеров

Я работаю над языком Haskell-meet-SQL для манипуляций с базой данных и над общей библиотекой классов типов, использующей Hackage везде, где это имеет смысл. Поскольку важной задачей оптимизатора запросов к базе данных является устранение ненужной со…
23 ноя '11 в 20:21
2 ответа

Длина счета Хаскелла с использованием ошибки типа броска фолдера

Попытка реализовать подсчет списков через функцию foldr lengthList = foldr (\x s -&gt; s + 1) 0 выдает следующую ошибку * Ambiguous type variable `t0' arising from a use of `foldr' prevents the constraint `(Foldable t0)' from being solved. Relevant …
3 ответа

Почему эта функция не может проверить тип?

Во время лекции по функциональному программированию мы увидели следующую функцию Haskell: f :: Bool -&gt; Int -&gt; (a -&gt; Int) -&gt; Int f x y z = if x then y + y else (z x) + (z y) Ожидается, что эта функция не сможет проверить тип. Однако причи…
3 ответа

Что такое квантификаторы типов?

Многие статически типизированные языки имеют параметрический полиморфизм. Например, в C# можно определить: T Foo&lt;T&gt;(T x){ return x; } На сайте вызова вы можете сделать: int y = Foo&lt;int&gt;(3); Эти типы также иногда пишутся так: Foo :: foral…
7 ответов

Разница между полиморфизмом и перегрузкой

Я нашел там много определений о полиморфизме и перегрузке. Некоторые люди говорили, что перегрузка является одним из типов полиморфизма. Хотя некоторые люди говорили, что они не одинаковы. Потому что в перегрузке будет размещена только одна функция.…
05 апр '14 в 21:55
1 ответ

Как выражения последовательности и полиморфная рекурсия играют вместе?

Этот проект действительно является источником вопросов для меня. Я уже узнал о полиморфной рекурсии и понимаю, почему это особый случай, и поэтому F# требует полных аннотаций типа. Для обычных функций мне, возможно, понадобится немного поиграть, но…
1 ответ

Как преобразовать полиморфное значение в строку?

Я на самом деле ищу функцию с подписью, как 'a -&gt; string который преобразует данный полиморфный тип в строку. Я уже думал о чем-то вроде let func elem = match elem with | int -&gt; string_of_int elem ... Надеюсь, кто-нибудь может мне помочь, спас…
2 ответа

Вопрос о параметрическом полиморфизме в OCaml

Эта полиморфная функция позволяет нам изменять порядок аргументов произвольной функции с карри: # let flip f x y = f y x ;; val flip : ('a -&gt; 'b -&gt; 'c) -&gt; 'b -&gt; 'a -&gt; '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 и смотрю на простой пример использования приложения функции с $, Это кажется простым - он берет функцию и применяет ее к значению. Так что это имеет смысл: &gt; (+3) $ 2 5 Это также имеет смысл: &gt; ($) (+3) 2 5 Это имеет смысл,…
2 ответа

Хороший способ для преобразования между специальными полиморфными функциями и параметрическими полиморфными

Мне интересно, есть ли общие способы преобразования между специальными полиморфными функциями и параметрическими полиморфными. Другими словами, учитывая специальную полиморфную функцию, как реализовать ее параметрический аналог? а как же наоборот? п…