簡體   English   中英

多個導入行在 ghci 中產生錯誤

[英]Multiple import lines produces error in ghci

這是我在 ghci REPL (stack ghci 8.10.7) 上嘗試過的

λ> :{
| import Data.List
| import Data.Ratio
| :}
error: expecting a single import declaration

為什么我一次不能進行多個導入? 順便說一句,可以這樣輸入完整的模塊定義,即

λ> :{
 | module STAL where
 | import Data.List
 | import Data.Ratio
 | import Data.Decimal
 | :}

我的動機是我將 Emacs org-mode 的 babel 用於 Haskell ,它只適用於被包圍的多行代碼:{:}

目前不支持這種多重導入。 However, there's a closed ticket asking for the same https://gitlab.haskell.org/ghc/ghc/-/issues/20473 , and a merged patch that implements what you're asking for: https://gitlab.haskell .org/ghc/ghc/-/commit/7850142c09090a2eef1e1b0281acd641e843356a

我使用 GHC 9.2.1 進行了測試,它的響應方式與您報告的相同,因此顯然該補丁沒有發布到該版本。 但我想下一個版本將支持這樣的多重導入。

我剛剛檢查過,事實證明(至少在 GHC 9.0.1 上)您可以在多行模式下使用 ghci 的:module命令(簡稱:m )。

Prelude
λ :{
| :m Data.List Data.Ratio
| :}
Prelude Data.List Data.Ratio

這也允許:m +...添加一些模塊,或:m -...刪除一些模塊。 如果您談論的是您自己的模塊(可用源代碼),您可以在任何模塊名稱前加一個星號,將其內部內容帶入 scope。

但是,您不能進行更高級的導入(限定、隱藏或僅導入某些內容)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM