GHC警告我在顶层没有功能签名。我不明白为什么我会需要它们。提供它们的问题在于它们非常复杂,就像这个(自动生成):
applyValue :: forall t t1 t2 t3 t4.
(t2 -> t)
-> (t2 -> t3 -> t4 -> t1) -> t2 -> t3 -> t4 -> (t -> Bool) -> [t1]
那么我为什么要费心添加呢?
功能本身:
applyValue getValueAt stitchAndMove at fabric mark matchAt =
if matchAt (getValueAt at)
then [stitchAndMove at fabric mark]
else []
答案 0 :(得分:23)
(node -> Bool) -> (edge -> Bool) -> (graph -> Bool)
这样的内容可以比(t1 -> Bool) -> (t2 -> Bool) -> (t3 -> Bool)
更具可读性,即使它们是等效的。