Полиморфное самостоятельное применение

У меня есть пример системного плиморфизма F, который я не совсем понимаю:

Если бы я удалил типы, он бы остался: \f.\ Af (f a), который не имеет смысла.

ты можешь помочь мне с этим? Спасибо!

1 ответ

Решение

Вычеркнутый термин имеет смысл: в Хаскеле это будет \f a -> f (f a)довольно обычная функция, которая применяет свой первый аргумент к своему второму, а затем снова к результату.

Разница между \f a -> <body> а также \f.\a. <body> это только один из обозначений. Если вы предпочитаете, напишите термин Haskell \f -> \a -> f (f a), что эквивалентно, но синтаксически немного ближе к стертой Системе F.

(Обратите внимание, что double не само приложение, которое было бы \f -> f f.)

Другие вопросы по тегам