14

Haskell では、次のように、その名前またはショートカット名で修飾されたモジュールをインポートできます。

import qualified Data.List as List
import qualified Data.Map

次のように、モジュールから関数の選択セットのみをインポートしたり、選択セット以外のすべての関数をインポートしたりすることもできます。

import Data.List (sort, intersperse)
import Data.Map hiding (findWithDefault)

import Data.List (sort, intersperse)上記の例のようList.sortに、関数の特定のセットをインポートすることはできList.intersperseますか?

これは機能しませんが、私が求めているのはその精神です。

import qualified Data.List (sort, intersperse) as List

多分

import qualified Data.List as List (sort, intersperse)
4

3 に答える 3

19
import qualified Data.List as List (sort, intersperse)

これは実際には問題なく機能します。インポート宣言の文法は次のとおりです。

5.3 輸入申告

impdecl   →   import [qualified] modid [as modid] [impspec]

qualifiedインポート仕様を妨げasません。これはHaskell 98 レポートの一部であるため、Haskell2010 の追加ではありません。

一方、あなたの最初の例

import qualified Data.List (sort, intersperse) as List
--     qualified           impspec!            as modid
--                            ^                    ^         
--                            +--------------------+

impspec が提供されている場合、インポート宣言の最後の要素でなければならないため、文法に従いません。

于 2015-01-19T08:13:36.693 に答える
5

少なくとも Haskell 2010 Report によると、これは許可されています。最初に、次の例を含む例を参照してください。

import qualified A(x)

次に、実際の構文 specを調べます。これはqualified、、、asおよび "impspec" (インポートされた識別子のリストまたは非表示の識別子のリスト) がすべてオプションであり、独立していることを示しています。したがって、genisageが説明する構文は実際には標準です。

于 2015-01-19T06:30:41.960 に答える
5

https://www.haskell.org/haskellwiki/Importで言及されていないという事実にもかかわらず、import qualified Foo as Bar (x, y)私にとってはうまくいくようです。私はghc 7.6.3を実行しています。その特定の wiki ページが古くなっている可能性があります。うまくいかない場合は、どのバージョンの ghc を使用していますか?

于 2015-01-19T05:18:06.397 に答える