not*_*xit 6 io haskell map buffering
我正在尝试使用interact
函数生成交互式Haskell程序map
.
这是我在ghci中得到的(据我所知,这是所有教程解释interact
用法的方式- 结果除外).
*Module> interact $ unlines . map (++ "!") . lines
tteesstt
!
Run Code Online (Sandbox Code Playgroud)
请注意,实际发生的是我输入的每个字符都会立即重复,然后按Return键后会出现感叹号.然而,我期待这样:
*Module> interact $ unlines . map (++ "!") . lines
test
test!
Run Code Online (Sandbox Code Playgroud)
如果我使用相同的程序结构,它可以完美地工作,而filter
不是map
.
fuz*_*fuz 10
问题是ghci将缓冲模式更改为每个字符.也就是说,程序一旦开始就会开始处理代码.如果将此行写入名为的文件中foo.hs
main = interact $ unlines . map (++ "!") . lines
Run Code Online (Sandbox Code Playgroud)
并使用runhaskell foo.hs
你运行它将看到它按预期工作,因为Haskell默认使用行缓冲.
归档时间: |
|
查看次数: |
1299 次 |
最近记录: |