Haskell-syntax für ein case-Ausdruck in do-block
Ich kann nicht ganz herausfinden, das syntax-problem mit einer case
Ausdruck in einer do
block.
Was ist die richtige syntax?
Wenn Sie beheben könnte mein Beispiel und erklären Sie, dass wäre das beste.
module Main where
main = do
putStrLn "This is a test"
s <- foo
putStrLn s
foo = do
args <- getArgs
return case args of
[] -> "No Args"
[s]-> "Some Args"
Wieder ein kleines update. Meine Quelldatei war eine Mischung von Leerzeichen und Tabulatoren und es verursacht alle Arten von Problemen.
Nur ein Tipp für alle anderen beginnen in Haskell. Wenn Sie Probleme haben, überprüfen Sie für Leerzeichen und Tabulatoren im Quellcode.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Rückkehr ist eine (überladene) Funktion, und es wird nicht erwartet, dass das erste argument ein Stichwort sein. Sie können entweder parenthesize:
oder verwenden Sie die praktische Anwendung-operator ($):
Stylewise, ich würde brechen Sie aus in eine andere Funktion:
aber Sie müssen noch parenthesize oder verwenden, ( $ ), wegen Rückkehr nimmt ein argument und Funktion der Anwendung ist die höchste Priorität.
Äquivalent:
Ist es wahrscheinlich besser tun als wnoise schlägt, aber dies könnte jemand helfen zu verstehen ein bisschen besser.