2014-02-22 37 views
4

我有一些代碼在我的Haskell程序像這樣:刪除項目哈斯克爾

evaluate :: String -> IO() 
evaluate = ... 

repl = forever $ do 
    putStr "> " >> hFlush stdout 
    getLine >>= evaluate 

問題是,當我按下刪除鍵(在Windows上退格鍵),而不是刪除從字符緩衝區,我得到一個^?字符。從標準輸入讀取時獲取刪除字符的規範方法是什麼?同樣,我希望能夠使箭頭鍵移動光標,等等。

+4

[haskeline](http://hackage.haskell.org/package/haskeline)庫是標準方法。我沒有使用它,所以我不能提供一個簡單的例子。 – Carl

+0

是的,[haskeline](http://hackage.haskell.org/package/haskeline)很棒,[LambdaCalculator](http://hackage.haskell.org/package/LambdaCalculator)是一個非常簡單的例子。 –

+0

感謝您的提示;我一定會考慮到haskeline。看起來像很多很酷的功能。 –

回答

10

編譯該程序,然後運行編譯的可執行文件。這將爲Delete鍵提供正確的行爲。出於某種原因,解釋該程序會導致使用Delete。

要編譯程序,只需調用ghc這樣的:

$ ghc -O2 myProgram.hs 

,這將產生一個myProgram可執行文件,你可以在命令行中運行:

$ ./myProgram 

這將會再給予正確的行爲的刪除。

+0

這是一個bug的無情。希望它很快得到解決。謝謝你讓我知道,加布裏埃爾 - 編譯爲二進制是我做的最後一件事情之一,所以它會有一段時間,然後我嘗試了:) –

+0

不客氣! –