Ask*_*ker 2 haskell types integer functional-programming
我正在学习关于Haskell的考试.我不明白我如何确定函数的类型.功能是:
func [] f = 16
func (h : t) f = (f h) + (func t f)
Run Code Online (Sandbox Code Playgroud)
我的猜测是第一行有这种类型:empty list -> a -> awhere a必须是数字类型.在Haskell表示法中Num a => [] -> a -> a,第二行有这种类型:[a]-> a -> ?它返回什么?也许(a, a)因为 (f h)是一个元组.怎么样(func t f),是a或?我如何将两条线混合在一起?
func [] f = 16
Run Code Online (Sandbox Code Playgroud)
这一行定义了一个函数func,接受一个列表f,然后返回16.类型可以写成Num a => [b] -> c -> a.
func (h : t) f = (f h) + (func t f)
Run Code Online (Sandbox Code Playgroud)
此行将f类型限制为Num a => b -> a,因为:
f 应接受列表中的元素f ... 应该返回一个值,该值可以添加到结果中 func ...所以,类型func是:
Num a => [b] -> (b -> a) -> a
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |