Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个我不太了解的 System F 多态性示例:
如果我要删除它会保留的类型: \f.\af (fa) 这没有任何意义。
你能帮我解决这个问题吗?谢谢!
删除的术语确实有意义:在 Haskell 中,它是\f a -> f (f a)一个相当普通的函数,将其第一个参数应用于第二个参数,然后再次应用于结果。
\f a -> f (f a)
\f a -> <body>和之间的区别\f.\a. <body>只是符号之一。如果您愿意,请编写 Haskell 术语\f -> \a -> f (f a),它等效但在语法上更接近已擦除的 System F。
\f a -> <body>
\f.\a. <body>
\f -> \a -> f (f a)
(请注意,这double不是自我申请,而是\f -> f f。)
double
\f -> f f