【发布时间】:2015-09-30 11:51:27
【问题描述】:
我必须从 Haskell 中的给定函数中找到最通用的类型,或者更确切地说,找到两个函数的“乘积”的最通用类型(如果存在)。我不确定,但也许我应该使用 Robinson 统一算法,但我无法理解。我需要一个详细的解决方案,一步一步来,这样我就明白了。
功能:
map :: (a → b) → [a] → [b]
iterate :: (a → a) → a → [a]
如何找到最通用的类型
-
map iterate iterate map
这不是家庭作业。
【问题讨论】:
-
“一般”是什么意思?类型应该泛化吗?转变?请解释一下。
-
类型应该是泛化的。例如:typ(map) = typ(iterate) = typ(map iterate) 或 typ(iterate) = typ(map) = typ(iterate map)。但是我不确定这些转换。
-
告诉我们您尝试了什么,以及是什么阻止了尝试成功。
-
我想到的另一个想法:这听起来很像家庭作业问题;如果是,您的老师(或助教)可能愿意亲自与您详细讨论。
-
另外,您是否尝试过根据 GHCi 推断的类型检查您的直觉?
标签: haskell types type-inference unification