我有这行代码:
Hlint建议我用替换它。
这个建议的动机是什么?仅仅为了简短,还是其他方面(性能)?因为虽然第二个代码更短,但我发现第一个代码更易于阅读。
实际上,我的问题更加普遍,因为这只是其中一个例子:Hlint的建议是否通常仅基于简短的动机,还是有其他改进在建议背后?
我有这行代码:
map (\(u,v) -> flatTorus n u v) gridUV
Hlint建议我用替换它。
map (uncurry (flatTorus n)) gridUV
这个建议的动机是什么?仅仅为了简短,还是其他方面(性能)?因为虽然第二个代码更短,但我发现第一个代码更易于阅读。
实际上,我的问题更加普遍,因为这只是其中一个例子:Hlint的建议是否通常仅基于简短的动机,还是有其他改进在建议背后?
uncurry
的作用,那么人们就不必思考正在发生什么。我还认为hlint
建议使用map (uncurry (flatTorus n)) gridUV
(多加一对括号)。 - Willem Van Onsemhlint
的建议既考虑到代码的简洁性又注意到可读性。其中一些建议可能会在社区中得到广泛认同,而其他建议(比如这个)则不一定。就个人而言,我并没有发现第二段代码比第一段要好多少;它们可以说是几乎等价的。也许hlint
应该为其建议提供一个权重。 - chix!!0
和head x
都不是很优雅。最好使用模式匹配,因为不能保证列表有元素。实际上,应该避免使用head
、tail
、(!!)
和length
这些函数。 - Willem Van Onsemlet [a,b,c] = x in Vertex3 a b c
。 - Li-yao Xiaf (x0:x1:x2:_) = Vertex x0 x1 x2; f _ = <其他内容>
- Willem Van Onsem