[英]What's the difference between these haskell function definitions?
我真的不明白第二个有什么问题......
--ver1
mymin [a]=a
mymin (x:y:xs) = mymin ((if x < y then x else y):xs)
--ver2
mymin [a]=a
mymin (x:y:xs) = mymin ((
| x<y x
| otherwise y
):xs)
第二个不起作用的原因仅仅是语法无效的 Haskell。
Guards ( | x < y ..
) 不是if
语法替代品——它们只在特定的地方工作。 例如在这里你必须像这样使用它们:
mymin [a] = a
mymin (x:y:xs)
| x < y = mymin (x:xs)
| otherwise = mymin (y:xs)
如果您想了解更多信息,在LYAH 中有一个非常好的解释(寻找Guards,Guards! )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.