在介绍性的Haskell文本中,了解您对Haskell的好作,作者定义了一个函数applyTwice,两次将函数f应用于参数x以说明更高阶功能范式的核心功能。了解高阶函数类型声明
applyTwice :: (a -> a) -> a -> a
applyTwice f x = f (f x)
到目前为止,我发现Haskell的类型声明是清晰的,但是这个特殊的例子让我感到困惑。我认为这是一个更好理解类型声明的机会。
作者指出这个构造“表示第一个参数是一个函数,它接受某些东西并返回相同的东西,第二个参数也是该类型的东西,返回值也是相同的类型。 (text)
这种类型声明是什么意思?为什么不使用(a - > a) - > a,每个 - >表示某种转换?
?或者,等价地,传递一个函数,当给定一个'a'时将返回一个'a',并得到一个函数,当给定一个'a'时将返回一个'a'。 – user2407038