Описание тега hindley-milner

In type theory, Hindley–Milner (HM) is a classical type inference method with parametric polymorphism for the lambda calculus.
1 ответ

Есть ли что-то неосуществимое в статических типах актерских моделей межпроцессного взаимодействия?

Так что я только недавно столкнулся с akka за пределами игрушечной емкости, и я не могу не заметить, что он и OTP совместно используют динамическую типизацию, несмотря на общее предпочтение scala статических типов. Я начал немного копаться и наткнул…
19 ноя '17 в 18:54
2 ответа

Каковы пределы вывода типа?

Каковы пределы вывода типа? Какие системы типов не имеют общего алгоритма вывода?
4 ответа

Ограничить число в диапазоне (Haskell)

Я выставляю функцию, которая принимает два параметра, один - минимальная граница, а другой - максимальная граница. Как я могу гарантировать, используя типы, что, например, минимальная граница не больше максимальной границы? Я хочу избежать создания …
5 ответов

Что делает систему типов Haskell более "мощной", чем системы типов других языков?

Чтение недостатков системы типов Scala по сравнению с Haskell? Я должен спросить: что именно делает систему типов Haskell более мощной, чем системы типов других языков (C, C++, Java). Очевидно, даже Scala не может выполнять некоторые из тех же полно…
2 ответа

Что не так с моим синонимом типа Haskell?

У меня есть две функции для управления циклами, continue а также break: type Control a = (a -> a) -> a -> a continue :: Control a continue = id break :: Control a break = const id Затем я хотел упростить Control Введите синоним. Следователь…
2 ответа

Предполагаемый тип бесконечно рекурсивной функции

Для цикла, как показано ниже: let rec loop () = loop () подпись в соответствии с try.ocamlpro.com: val loop : unit -> 'a = <fun> Почему это так? loop() никогда не прекращает вызывать себя, не должен ли он ничего возвращать?
19 фев '18 в 09:34
1 ответ

Haskell: маркировка AST с информацией о типах с использованием алгоритма W

У нас есть определение AST: data Term a = Lam String a | App a a | Var String deriving(Read,Show,Eq,Functor,Foldable,Traversable) И F-алгебра для вывода типа: type Wrapped m a = Enviroment -> m a type Result m = Wrapped (Type,Substitution) w :: (…
2 ответа

Сохранение типа общего без η-расширения

Что я делаю: я пишу небольшую систему интерпретатора, которая может анализировать файл, превращать его в последовательность операций, а затем подавать тысячи наборов данных в эту последовательность для извлечения некоторого окончательного значения и…
25 окт '10 в 09:40
1 ответ

Вывод рекурсивных выражений с использованием Хиндли Милнера и ограничений

Я пытаюсь определить тип следующего выражения: let rec fix f = f (fix f) который должен быть указан тип (a -> a) -> a После использования алгоритма "снизу вверх" (описанного в обобщении алгоритмов вывода типа Хиндли-Милнера) с добавленным прав…
3 ответа

Что такое Хиндли-Милнер?

Я встречал этот термин Хиндли-Милнер, и я не уверен, что понял, что это значит. Я прочитал следующие посты: Стив Йегге - Динамичные языки наносят ответный удар Стив Йегге - Проблема Буратино Даниэль Спивак - Что такое Хиндли-Милнер? (а почему это кр…
3 ответа

Вывод типа реализован в C++

Существует ли реализация в C++ логического вывода типа стиля Дамаса-Хиндли-Милнера, предпочтительно с использованием современных методов C++?
08 янв '12 в 02:10
2 ответа

Могу ли я проверить, имеет ли данная сигнатура типа функции потенциальную реализацию?

В случае явных аннотаций типов Haskell проверяет, является ли выведенный тип по крайней мере таким же полиморфным, как его сигнатура, или, другими словами, является ли выведенный тип подтипом явного. Следовательно, следующие функции не типизированы:…
2 ответа

Опишите умозаключение типа Дамаса-Милнера так, чтобы студент CS101 мог понять

Хиндли-Милнер - это система типов, которая является основой систем типов многих известных языков функционального программирования. Damas-Milner - это алгоритм, который выводит (выводит?) Типы в системе типов Хиндли-Милнера. Википедия дает описание а…
1 ответ

Почему безопасные по типу реляционные операции так сложны?

Я пытался закодировать реляционную проблему в Haskell, когда мне пришлось выяснить, что делать это безопасным способом далеко не очевидно. Например, скромный select 1,a,b, from T Уже возникает ряд вопросов: какой тип этой функции? какой тип проекции…
1 ответ

Будет ли вывод типа Хиндли Милнера полезен для PyPy для RPython?

Проводит ли PyPy статическую проверку типов во время компиляции, чтобы отследить ошибки типов во время компиляции? И если бы не что-то вроде вывода типа HM, было бы полезно отлавливать эти ошибки во время компиляции?
06 дек '12 в 02:38
1 ответ

Haskell: ошибка переменной жесткого типа при передаче функции в качестве аргумента

GHC говорит, что моя функция слишком общая, чтобы быть переданной в качестве аргумента. Вот упрощенная версия, которая воспроизводит ошибку: data Action m a = SomeAction (m a) runAction :: Action m a -> m a runAction (SomeAction ma) = ma -- Error…
25 июл '17 в 07:20
0 ответов

Представляющий полиморфизм с унификацией-фд

Я хотел бы использовать unification-fd пакет для реализации простой проверки типов для системы типов Хиндли-Милнера. Это требует представления полиморфных ("forall") типов. Каков наилучший способ представления этих типов? Переменные, предоставленные…
1 ответ

Связывание типа ocaml из-за специализированного рекурсивного использования типа

У меня есть параметризованный тип, который рекурсивно использует сам себя, но со специализированным параметром типа, и когда я реализую универсальный оператор, тип этого оператора слишком тесно связан из-за случая, который обрабатывает специализиров…
10 апр '13 в 18:24
6 ответов

"Какую часть Хиндли-Мильнера ты не понимаешь?"

Клянусь, раньше продавалась футболка с бессмертными словами: Какая часть ты не понимаешь? В моем случае ответ будет... все это! В частности, я часто вижу подобные обозначения в документах на Haskell, но я понятия не имею, что это означает. Я понятия…
2 ответа

В чем разница между '.' и "<<<" при выполнении композиции функций?

Я пытаюсь выполнить композицию функций в Haskell, и я не уверен, какой оператор является правильным для использования. Документы содержат эти два типа подписей: (.) :: (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c (&lt;&lt;&lt;) :: Category cat =&gt…
27 авг '18 в 22:41