Haskell 多态性自我应用

Haskell 多态性自我应用,haskell,lambda,system-f,Haskell,Lambda,System F,我有一个我不太了解的System F plymorphism的例子: 如果我删除这些类型,它将保留: \f、 \a.f(f a)这毫无意义 你能帮我吗? 谢谢大家! 删除的术语确实有意义:在Haskell中,它将是\f a->f(f a),一个相当普通的函数,将其第一个参数应用于第二个参数,然后再应用于结果 \f a->和\f.\a之间的区别只是其中一种表示法。如果愿意,可以编写Haskell术语\f->\a->f(fa),它是等效的,但在语法上更接近已擦除的系统f (请注意,double不是

我有一个我不太了解的System F plymorphism的例子:

如果我删除这些类型,它将保留: \f、 \a.f(f a)这毫无意义

你能帮我吗?
谢谢大家!

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

\f a->
\f.\a之间的区别只是其中一种表示法。如果愿意,可以编写Haskell术语
\f->\a->f(fa)
,它是等效的,但在语法上更接近已擦除的系统f


(请注意,
double
不是自我应用,这将是
\f->f

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

\f a->
\f.\a之间的区别只是其中一种表示法。如果愿意,可以编写Haskell术语
\f->\a->f(fa)
,它是等效的,但在语法上更接近已擦除的系统f

(请注意,
double
不是自我应用程序,而是
\f->f