Могут ли ML-функторы быть практически выражены с помощью интерфейсов и дженериков .NET? Есть ли пример использования расширенного ML-функтора, который бросает вызов таким кодировкам?
Резюме ответов:
В общем случае ответ НЕТ. Модули ML предоставляют функции (такие как совместное использование спецификаций через сигнатуры [1]), которые непосредственно не сопоставляются с понятиями .NET.
Однако для некоторых случаев использования идиомы ML могут быть переведены. Эти случаи включают не только основной функтор Set
[2], но также функторное кодирование монад [3] и еще более расширенное использование Haskell, например, наконец, бездекорные интерпретаторы [4, 5].
Практические кодировки требуют компромиссов, таких как полубезопасные понижения. Ваш пробег будет настороже.
Блоги и код: