我剛剛開始學習 Haskell。Prelude 被描述為默認模塊:
Prelude:一個標準模塊。Prelude 默認匯入到所有 Haskell 模塊中
但這并不能解釋為什么各種檔案在 REPL 中以“Prelude”作為前綴:
Prelude>
我已經通過 Chocolatey安裝了 mingw 版本,我的 REPL 顯示“ghci”作為前綴,而不是“Prelude”:
GHCi, version 9.2.1: https://www.haskell.org/ghc/ :? for help
ghci>
Prelude 模塊已加載:
GHCi, version 9.2.1: https://www.haskell.org/ghc/ :? for help
ghci> :browse! Prelude
-- imported via Prelude
(!!) :: [a] -> Int -> a
($) :: (a -> b) -> a -> b
...
為什么前綴不同,互動式編譯器中的“Prelude”是什么意思?
uj5u.com熱心網友回復:
但這并不能解釋為什么各種檔案在 REPL 中以“Prelude”作為前綴。
自從 ghci-9.0它已更改并顯示ghci>提示。
之前 ghci-9.0,提示顯示已加載的模塊。例如,如果您匯入一個模塊Data.List,它會將提示更改為:
$ ghci-8.6.5
GHCi, version 8.6.5: http://www.haskell.org/ghc/ :? for help
Prelude> import Data.List
Prelude Data.List>
如果我們不Prelude通過指定-XNoImplicitPrelude標志加載,我們會得到:
$ ghci-8.6.5 -XNoImplicitPrelude
GHCi, version 8.6.5: http://www.haskell.org/ghc/ :? for help
>
作為 ghci-9.0,它顯示ghci>為提示。通常,如果您必須使用很多模塊,提示會很長,因此使用 GHCi 會很不方便。
您可以將提示設定為其他內容,:set prompt "someprompt> "例如:
$ ghci
GHCi, version 9.0.1: https://www.haskell.org/ghc/ :? for help
ghci> :set prompt "someprompt> "
someprompt>
正如@pedrofurla 所說,提示有一些特殊的序列來顯示一些資訊。如果您希望在較新版本的 GHCi 中恢復舊行為,則將提示設定為(也為多行提示設定):%s> :set prompt-cont "%s| "
$ ghci
GHCi, version 9.0.1: https://www.haskell.org/ghc/ :? for help
ghci> :set prompt "%s> "
Prelude> import Data.List
Prelude Data.List>
如果您希望對提示的更改持續到新的 GHCi 會話中,則將命令放入~/.ghci(如果它不存在則創建它)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/370611.html
標籤:哈斯克尔
