【发布时间】:2018-01-11 04:15:25
【问题描述】:
我遇到了这个功能
iter p f x = if (p x) then x else (iter p f (f x))
我想我会尝试自己定义多态类型以理解这个概念。
我的想法如下:
函数有3个参数,所以我们有t1 -> t2 -> t3 -> T
p在 if 条件中使用,因此它必须返回bool,因此返回t1 = a -> Boolf也与p是同一类型,因为它在 else 块中作为参数传递,因此t2 = a -> Boolx 在 if 条件中使用,因此它必须返回一个布尔值,因此
t1 = a -> Bool
但是当我检查 ghci 中的类型时,他们给我的类型是
iter :: (t -> Bool) -> (t -> t) -> t -> t
谁能解释一下这背后的原因。
谢谢
【问题讨论】:
标签: function haskell types polymorphism polymorphic-functions