我真的不明白第二个问题是什么......
--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)
答案 0 :(得分:5)
第二个无法正常工作的原因只是语法无效Haskell。
Guards (| x < y ..
)不是if
的语法替代 - 它们只能在特定的地方使用。例如,你必须像这样使用它们:
mymin [a] = a
mymin (x:y:xs)
| x < y = mymin (x:xs)
| otherwise = mymin (y:xs)
在LYAH中有一个非常好的解释(寻找警卫,警卫!),以防你想了解更多