显然,这种选择性导入仅部分起作用:
λ> :m
λ> import Data.Monoid (Sum, getSum)
λ> :t getSum
getSum :: Sum a -> a
λ> :t Sum
<interactive>:1:1: error:
• Data constructor not in scope: Sum
• Perhaps you meant variable ‘sum’ (imported from Prelude)
但完全导入确实有效:
λ> import Data.Monoid
λ> :t Sum
Sum :: a -> Sum a
为什么我可以从Monoid导入getSum而不是Sum?
我正在使用与Stack一起安装的GHCi 8.0.2。
答案 0 :(得分:5)
您需要导入Sum
的构造函数:
λ> import Data.Monoid (Sum(..), getSum)
这将导入所有构造函数(如果是 enum / sum类型),如果你只想导入一个构造函数,你可以这样做:
λ> import Data.Monoid (Sum(Sum), getSum)