14
我剛剛偶然發現了一個我不明白的東西。GHCi與runhaskell的getLine功能區別
如果我使用GHCI和使用getLine
我得到以下
Prelude> a <- getLine
Test<Backspace>oo<CR> -- the Backspace action results in a '^?'
Prelude> a
"Test\DELoo"
如果我在一個Haskell寫相同文件
module Main where
main :: IO()
main = do a <- getLine
putStrLn a
與runhaskell運行腳本並進入相同的輸入,退格按預期刪除't'。
爲什麼會有差異?
你說我會有很多不需要的副作用,他們只是在ghci中不需要的,或者是否在編譯版本中存在對它的某種保護 - 你能詳細說明一下嗎? – epsilonhalbe
無論你是否願意 - 我會盡快接受這個答案! – epsilonhalbe
它們在GHCi中是不需要的。它會混淆GHCi本身讀取輸入的方式,所以當你輸入GHCi運行的內容時,只有當你點擊返回鍵時纔會看到它們。 – kosmikus