如何在 ghci 中的 :load 或 :reload 之后维护 -interactive-print?
How to maintain -interactive-print after :load or :reload in ghci?
我正在使用 -interactive-print
在 ghci
中评估的每一行之后打印当前时间:
(来自 ~/.ghci
):
import qualified Text.Show.TimePrint
:set -interactive-print=Text.Show.TimePrint.timePrint
它一直有效,直到我尝试 :load
一个文件:
$ ghci
GHCi, version 7.10.3: http://www.haskell.org/ghc/ :? for help
Prelude Text.Show.TimePrint> 1+2
3
20:08:42
Prelude Text.Show.TimePrint> :l file.hs
[1 of 1] Compiling Main ( file.hs, interpreted )
Ok, modules loaded: Main.
*Main Text.Show.TimePrint> 1+2
3
我在这里看到了描述问题的这张票:https://ghc.haskell.org/trac/ghc/ticket/11159;建议的解决方案是将其放在 "registered package" 中,我不太明白。我放在Text.Show
里,是不是不太对?谢谢。
(安装包的代码做TimePrint
:)
module Text.Show.TimePrint (timePrint) where
import System.IO
import Data.Time
getTime :: IO String
getTime = do
now <- getCurrentTime
return (formatTime defaultTimeLocale "%T" now)
timePrint :: Show a => a -> IO ()
timePrint a = do
s <- getTime
putStrLn $ show a ++ "\n" ++ s
您正在使用 GHC 7.10.3;您链接的票证说这是在 7.10.3 之后修复的。因此,您需要将 GHC 升级到更新的版本。
我正在使用 -interactive-print
在 ghci
中评估的每一行之后打印当前时间:
(来自 ~/.ghci
):
import qualified Text.Show.TimePrint
:set -interactive-print=Text.Show.TimePrint.timePrint
它一直有效,直到我尝试 :load
一个文件:
$ ghci
GHCi, version 7.10.3: http://www.haskell.org/ghc/ :? for help
Prelude Text.Show.TimePrint> 1+2
3
20:08:42
Prelude Text.Show.TimePrint> :l file.hs
[1 of 1] Compiling Main ( file.hs, interpreted )
Ok, modules loaded: Main.
*Main Text.Show.TimePrint> 1+2
3
我在这里看到了描述问题的这张票:https://ghc.haskell.org/trac/ghc/ticket/11159;建议的解决方案是将其放在 "registered package" 中,我不太明白。我放在Text.Show
里,是不是不太对?谢谢。
(安装包的代码做TimePrint
:)
module Text.Show.TimePrint (timePrint) where
import System.IO
import Data.Time
getTime :: IO String
getTime = do
now <- getCurrentTime
return (formatTime defaultTimeLocale "%T" now)
timePrint :: Show a => a -> IO ()
timePrint a = do
s <- getTime
putStrLn $ show a ++ "\n" ++ s
您正在使用 GHC 7.10.3;您链接的票证说这是在 7.10.3 之后修复的。因此,您需要将 GHC 升级到更新的版本。