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