TL;DR
- ホームディレクトリに
.ghciを作り、:set promptと:set prompt-contを書くと、GHCi のプロンプトを変えられる。 prompt-functionとprompt-function-contを使えば、プロンプトを動的に変えることもできる。
背景
Haskell の対話環境である GHCi のプロンプトを、好みの表示に変えたかった。
検証
固定のプロンプトを設定する
GHC のユーザーガイドによると、1 行入力時のプロンプトは :set prompt で、複数行入力時のプロンプトは :set prompt-cont で設定できる。ホームディレクトリに .ghci を作成し、次のように書いた。
-- 1 行時のプロンプト
:set prompt "λ> "
-- 複数行時のプロンプト
:set prompt-cont "λ| "動的なプロンプトを設定する
GHC のユーザーガイドによると、prompt-function と prompt-function-cont に関数を渡せば、プロンプトを動的に変えられる。渡す関数のシグネチャは [String] -> Int -> IO String である必要がある。第 1 引数は現在のモジュール名のリスト、第 2 引数は履歴番号である。
次の例では、履歴番号をプロンプトに表示する。
:{
myPrompt modules hist = return $ "(" ++ show hist ++ ") λ> "
:}
:set prompt-function myPrompt結果
.ghci に書いた設定で、GHCi のプロンプトが λ> 、複数行入力時は λ| に変わった。
キーワード
- GHCi
- Haskell