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 -> a
where 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 次 |
最近记录: |