Haskell 类型不清楚
Haskell type not clear
我正在尝试的其中一个练习定义了一个函数,如下所示:
twice f x = f (f x)
当我打印两次的类型时,我看到:
Main> :t twice
twice :: (a -> a) -> a -> a
不确定我是否理解此处的输出。所以 twice
接受函数类型的输入(a -> a
类型)。这个对吗?如果是这样,那么 f
是如何评估为函数类型 (a -> a
) 的?那么这里的twice
的return类型是什么?
twice f x = f (f x)
twice :: (a -> a) -> a -> a
是这样的
f
是a -> a
类型,x是a
类型,f (f x)
是a
.
类型
您应该将 f
作为 a -> a
函数传递,例如 * 2
是的,没错。
f
的类型为 a -> a
需要 x
类型 a
并且应该能够再次使用他的输出,所以输出应该与输入的类型相同。
并且 twice
与来自 f
的调用具有相同的输出类型,因此 a
.
这给了我们这个:
twice :: (a -> a) -> a -> a
twice f x = f (f x)
我正在尝试的其中一个练习定义了一个函数,如下所示:
twice f x = f (f x)
当我打印两次的类型时,我看到:
Main> :t twice
twice :: (a -> a) -> a -> a
不确定我是否理解此处的输出。所以 twice
接受函数类型的输入(a -> a
类型)。这个对吗?如果是这样,那么 f
是如何评估为函数类型 (a -> a
) 的?那么这里的twice
的return类型是什么?
twice f x = f (f x)
twice :: (a -> a) -> a -> a
是这样的
f
是a -> a
类型,x是a
类型,f (f x)
是a
.
您应该将 f
作为 a -> a
函数传递,例如 * 2
是的,没错。
f
的类型为 a -> a
需要 x
类型 a
并且应该能够再次使用他的输出,所以输出应该与输入的类型相同。
并且 twice
与来自 f
的调用具有相同的输出类型,因此 a
.
这给了我们这个:
twice :: (a -> a) -> a -> a
twice f x = f (f x)