Oma*_*hab 2 haskell functional-programming
我试图重新创建此Haskell代码的输出:
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
Run Code Online (Sandbox Code Playgroud)
预期产量如下:
$ runhaskell for.hs
1
2
3
7
8
9
loop
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
Test4.hs:2:1: parse error on input `import'
Run Code Online (Sandbox Code Playgroud)
什么是错误的想法?
Run Code Online (Sandbox Code Playgroud)Test4.hs:2:1: parse error on input `import'
该错误指向文件的第二行.引用前两行:
forM_ = flip mapM_
import Control.Monad.Cont
Run Code Online (Sandbox Code Playgroud)
问题是导入声明必须位于模块的开头,在任何定义之前(导入之前可能出现的唯一事情是语言编译指示,例如用于启用GHC扩展的那些,以及模块声明).在您的情况下,文件的第一行是一个定义,因此第二行中错误放置的导入声明会导致解析错误.由于第一行实际上并不是您链接的帖子中的代码段的一部分,因此您只需将其删除即可.
| 归档时间: |
|
| 查看次数: |
4458 次 |
| 最近记录: |