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