2016-11-07 4 views
2

上のエラーを解析し、次のようハスケル:私は<a href="https://lotz84.github.io/haskellbyexample/ex/for" rel="nofollow noreferrer">this Haskell code</a>の出力を再作成しようとしています入力 `インポート」

forM_ = flip mapM_ 
import Control.Monad.Cont 

main = do 
    forM_ [1..3] $ \i -> do 
     print i 

forM_ [7..9] $ \j -> do 
    print j 

withBreak $ \break -> 
    forM_ [1..] $ \_ -> do 
     p "loop" 
     break() 

where 
withBreak = (`runContT` return) . callCC 
p = liftIO . putStrLn 

予想される出力は次のようになります。

$ runhaskell for.hs 
1 
2 
3 
7 
8 
9 
loop 

しかし、私は次のエラーを取得しています:

Test4.hs:2:1: parse error on input `import' 

何がうまくいかないのですか?

+5

他の定義の前にインポートする必要があります。その投稿の 'forM_ = flip mapM_'行はコードの一部ではないので、削除してください。 – duplode

+1

@duplodeそれは答え、コメントではありません! –

+1

また、私は近い票に反対します:これは非常に再現性があり、誤字ではありません。これは、私にとっては(単純であれば)完全にクロムのような質問のようです。 –

答えて

5
Test4.hs:2:1: parse error on input `import' 

エラーは、ファイルの2行目を指しています。最初の2行を引用:

forM_ = flip mapM_ 
import Control.Monad.Cont 

問題は、任意の定義(インポート前に来ることができる唯一のものは、使用されるもののような言語のプラグマは、ある前に輸入申告は、モジュールの先頭でなければならないということですGHC拡張を有効にし、モジュール宣言)。あなたの場合、ファイルの最初の行は定義なので、2行目の間違ったインポート宣言は解析エラーにつながります。その最初の行はリンク先のコードスニペットの一部ではなかったので、単純に削除することができます。

関連する問題

 関連する問題