繁体   English   中英

这些haskell函数定义之间有什么区别?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM