【发布时间】:2017-02-15 08:15:14
【问题描述】:
我正在尝试了解函数的 Haskell 类型变量。我写了一个函数:
applyTwice f x = f(f x)
我试图了解这个函数的类型变量,所以我做了一个:t applyTwice。 Haskell 是这样解释类型的:
applyTwice :: (t -> t) -> t -> t
然后我创建了另一个函数:
applyOnce f x = f x
这次:tHaskell 回归
applyOnce :: (t1 -> t) -> t1 -> t
我的问题是
我们如何阅读/理解这些函数的取值和返回值?
这是给
applyTwice的。如果他们说->的左侧是函数所需要的,而右侧是它返回的,那么它不应该是applyTwice :: ((t -> t) -> t) -> t?(t -> t)对应于(f x)和((t -> t) -> t)对应于f (f x),返回类型为t。- 这是给
applyOnce的。为什么函数的类型被解释为applyOnce :: (t1 -> t) -> t1 -> t?因为我们只接受一个函数并返回它的值。不应该是applyOnce :: (t1 -> t) -> t1吗?
作为 Haskell 的初学者,我希望得到任何建议。
【问题讨论】:
标签: haskell