在Haskell中是否有一个函数会返回一对中的另一个成员,例如调用函数"other":其他'D'('D','W')将返回'W'和其他'W'(' D','W')返回'D'?
"Haskell中有一个函数......"?
通过使用Hoogle,您可以很好地了解任何此类问题的答案.Haskell的美妙之处在于,这种类型通常会与你提出的功能完全一致,而Hoogle是一款可以让你获得非常全面的答案的工具.
在这种情况下,我们得到一个元组,并希望得到元组中的一个值作为结果.
(a, b)->a->b or (a, b)->b->a
Run Code Online (Sandbox Code Playgroud)
可是等等!Haskell不能从同一个函数输出两个不同的类型,因此给出了一个隐式约束 - a必须与之相同b.现在的类型是:
(a, a)->a->a
Run Code Online (Sandbox Code Playgroud)
(这使功能搜索空间变得更加狭窄,使得Hoogle更加有用).
再次,等等....我们忘记了什么.该类型a需要有一个(==)操作员才能进行测试....很棒,甚至还有一个缩小范围:
Eq a=>(a, a)->a->a
Run Code Online (Sandbox Code Playgroud)
现在我们可以将其输入Hoogle,看看......几乎没什么用处.
这是失败吗?一点也不!Hoogle非常全面,而且在我以前的经验中,如果它不存在,它可能不是标准功能,所以自己写.
(我觉得这个函数不是标准的就不足为奇了......元组很少用于传递相同类型项的泛型列表,这更像是列表中的东西)
| 归档时间: |
|
| 查看次数: |
141 次 |
| 最近记录: |