1

我有一个我不太了解的 System F 多态性示例: 在此处输入图像描述

如果我要删除它会保留的类型: \f.\af (fa) 这没有任何意义。

你能帮我解决这个问题吗?谢谢!

4

1 回答 1

4

删除的术语确实有意义:在 Haskell 中,它是\f a -> f (f a)一个相当普通的函数,将其第一个参数应用于第二个参数,然后再次应用于结果。

\f a -> <body>和之间的区别\f.\a. <body>只是符号之一。如果您愿意,请编写 Haskell 术语\f -> \a -> f (f a),它等效但在语法上更接近已擦除的 System F。

(请注意,这double不是自我申请,而是\f -> f f。)

于 2016-02-08T06:05:53.800 回答