我正在尝试的一个练习定义了一个函数,如下所示:
twice f x = f (f x)
当我打印两次的类型时,我看到:
Main> :t twice
twice :: (a -> a) -> a -> a
不确定我理解这里的输出。所以twice
需要一个函数类型的输入(类型为a -> a
)。这样对吗?如果是这样,那么如何f
评估为 function ( a -> a
)类型?那么twice
这里的返回类型是什么?
twice f x = f (f x)
twice :: (a -> a) -> a -> a
就是这样。
f
是类型a -> a
,x 是类型a
,f (f x)
是类型a
。
您应该f
作为a -> a
函数传递,例如* 2
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句