ely*_*ely 13 import haskell qualified-name
在Haskell中,我可以导入一个由其名称或快捷方式名称限定的模块,如下所示:
import qualified Data.List as List
import qualified Data.Map
Run Code Online (Sandbox Code Playgroud)
我还可以从模块中仅导入一组选定的函数,或者导入除选择集以外的所有函数,如下所示:
import Data.List (sort, intersperse)
import Data.Map hiding (findWithDefault)
Run Code Online (Sandbox Code Playgroud)
是否可以导入一组特定的函数,import Data.List (sort, intersperse)如上例所示,但是要确保仍然以合格的方式识别函数,例如List.sort和List.intersperse?
虽然这不起作用,但这是我所要求的精神:
import qualified Data.List (sort, intersperse) as List
Run Code Online (Sandbox Code Playgroud)
也许
import qualified Data.List as List (sort, intersperse)
Run Code Online (Sandbox Code Playgroud)
Zet*_*eta 14
import qualified Data.List as List (sort, intersperse)
Run Code Online (Sandbox Code Playgroud)
这实际上很好并且有效.进口声明的语法如下:
5.3导入声明
Run Code Online (Sandbox Code Playgroud)impdecl ? import [qualified] modid [as modid] [impspec]
qualified并且as也不会阻止导入规格.这不是Haskell2010的补充,因为它已经成为Haskell 98报告的一部分.
另一方面你的第一个例子
import qualified Data.List (sort, intersperse) as List
-- qualified impspec! as modid
-- ^ ^
-- +--------------------+
Run Code Online (Sandbox Code Playgroud)
不遵循语法,因为impspec必须是导入声明中的最后一个元素(如果提供的话).
尽管在https://www.haskell.org/haskellwiki/Import上没有提到它,但import qualified Foo as Bar (x, y)似乎对我来说效果很好.我正在运行ghc 7.6.3.也许那个特定的wiki页面已经过时了.如果它对您不起作用,您使用的是什么版本的ghc?