Es stellt sich heraus, dass meine GHCi die -XNondecreasingIndentation
Erweiterung verwenden eingerichtet ist, die mit dem Befehl :show language
gesehen werden kann
base language is: Haskell2010
with the following modifiers:
-XNoDatatypeContexts
-XNondecreasingIndentation
dieser
Ohne diese Erweiterung ist schlecht Syntax:
foo :: IO()
foo = do
let x = do
b <- getLine
return b
return()
aber das ist in Ordnung:
foo :: IO()
foo = do
let
x = do
b <- getLine
return b
return()
das Problem zu beheben, fügen Sie
default-extensions:
NondecreasingIndentation
zum .cabal Datei, oder wenn Sie bevorzugen hinzufügen {-# language NondecreasingIndentation #-}
zu nur diesem einen Modul. Alternativ formatieren Sie den Code wie oben beschrieben oder verwenden Sie Haskell98 anstelle von Haskell2010.
Sind Sie sicher, dass Sie keine Tabs verwenden? Sie sind nicht verboten, aber sie können unvorhersehbare Dinge tun. –
das Snippet, wie es in eine neue Datei kopiert und eingefügt wird, funktioniert wie deklariert - Übrigens: Ist Ihnen bewusst, dass 'x' nichts tut? – Carsten
Ich habe es herausgefunden! Siehe meine Antwort. @PaulJohnson gibt es keine Tabs. –