代码:使用putChar后,haskell-mode在同一行打印“* Main>”?
main = do
putChar 't'
putChar 'e'
putChar 'h'
当我运行上述代码中,我得到
*Main> main
teh*Main>
但我期待
*Main> main
teh
*Main>
我的问题:为什么德*主要来而不是teh然后*主要在另一行?
我正在使用ekcs23与haskell模式。
代码:使用putChar后,haskell-mode在同一行打印“* Main>”?
main = do
putChar 't'
putChar 'e'
putChar 'h'
当我运行上述代码中,我得到
*Main> main
teh*Main>
但我期待
*Main> main
teh
*Main>
我的问题:为什么德*主要来而不是teh然后*主要在另一行?
我正在使用ekcs23与haskell模式。
putChar c
只写一个字符到控制台。这就是它的目的。因此,除非您以后在控制台上打印换行符,无论是使用putChar
,putStr
还是其他任何方法,以下输出都会转到同一行。该行为与C相同,或者如果您的文件没有拖尾换行符,则为cat
。它无处不在。唯一可行的选择(检查每个输出是否以换行符结束是不可行的)是无条件地在ghci或shell提示符之前输出一个换行符,这将导致许多恼人的空行。
如果真的困扰你,你总是可以定义
putCharLn :: Char -> IO()
putCharLn c = do putChar c
putChar '\n'
定义main
像:
main = do putChar 't'
putChar 'e'
putCharLn 'h'
现在:
*Main> main
teh
*Main>
“因为没有换行” :P〜(现在谁负责..是问题。) – 2012-08-02 00:37:10
@pst:那么,我必须接受它,因为它或? – Optimight 2012-08-02 00:44:57
那么,你总是可以编辑.el,或者可能有一个设置..我不使用haskell(或相关的模式),但:-)其他的方法可能只是把一个换行符字符(\ n应该足够)或通过putStrLn强制它。 – 2012-08-02 00:58:36