[英]Haskell basic function definition
我正在学习haskell,但我不太了解功能定义,例如:
module TestModule where
iter :: Int -> (a -> a) -> (a -> a)
iter n f
| n>0 = f . iter (n-1) f
| otherwise = id
iter_2 n f = foldr (.) id (replicate n f)
我应该提供什么功能? 我已经通过控制台加载了此功能,但并不太了解如何使用它。
我的问题是如何通过控制台使用此功能。 像“ iter 5 ???”
将函数的类型读取为
iter :: Int -> (a -> a) -> a -> a
^^^ ^^^^^^^^ ^ ^
arg arg arg result
意思是如果您提供一个Int
,一个(a->a)
函数和一个a
,它将给您另一个a
。 这里a
代表任何类型。 例如
iter 4 (+1) 0
将为4
,即对0
执行四次(+1)
。
您需要为其提供一个功能 ,更具体地说,是一个内部功能 (将任何类型映射到其自身)。 例如,
*Main> iter 3 sqrt 256
2.0
当然,这也可以是自定义函数,例如
*Main> let f x = x+2
*Main> iter 3 f 7
13
甚至是调用中定义的匿名权利:
*Main> iter 3 (\str -> "("++str++")") "..."
"(((...)))"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.