使用Set.fromList,得到错误"Prelude.!!:index too large"

The*_*ora 0 haskell ghc

有一个清单 lc

*Main Lib MetaDefinition WHparseCSV WHparseTxT Set> :info lc
lc :: IO [Int]  -- Defined at <interactive>:2:5
*Main Lib MetaDefinition WHparseCSV WHparseTxT Set> length <$> lc
1704399
Run Code Online (Sandbox Code Playgroud)

我想知道这个列表的基数,所以我尝试通过执行以下操作将此列表转换为集合:

*Main Lib MetaDefinition WHparseCSV WHparseTxT Set> import Data.Set as Set
*Main Lib MetaDefinition WHparseCSV WHparseTxT Set> let sc = Set.fromList <$> lc 
Run Code Online (Sandbox Code Playgroud)

但是,当我试图计算基数时,我得到了错误:

*Main Lib MetaDefinition WHparseCSV WHparseTxT Set> length <$> sc
*** Exception: Prelude.!!: index too large
Run Code Online (Sandbox Code Playgroud)

类型sc是正确的:

*Main Lib MetaDefinition WHparseCSV WHparseTxT Set> :info sc
sc :: IO (Set Int)  -- Defined at <interactive>:19:5
Run Code Online (Sandbox Code Playgroud)

我认为length用于计算类型的值时效果很好fromList :: [Int] -> Set Int

我真的很想知道是什么原因造成的Exception: Prelude.!!: index too large.这set是因为这是在IOmonad?

dfe*_*uer 5

我相信你正在咆哮着错误的树.lengthfor 的定义Data.SetPrelude.!!以任何方式直接或间接使用.也没有定义fromList.我相信列表本身的定义必须!!以某种方式涉及.检查您的来源,不要使用!!.