使用 Set.fromList ,获取错误"Prelude.!!: index too large"



有一个列表 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

我想知道此列表的基数,因此我尝试将此列表转换为以下操作:

*Main Lib MetaDefinition WHparseCSV WHparseTxT Set> import Data.Set as Set
*Main Lib MetaDefinition WHparseCSV WHparseTxT Set> let sc = Set.fromList <$> lc 

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

*Main Lib MetaDefinition WHparseCSV WHparseTxT Set> length <$> sc
*** Exception: Prelude.!!: index too large

sc的类型是正确的:

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

我认为length用于计算fromList :: [Int] -> Set Int

类型的值时效果很好

我真的想知道是什么原因导致 Exception: Prelude.!!: index too large 。这是因为此setIO Monad中?

我相信您正在吠叫错误的树。Data.Setlength的定义不会直接或间接使用Prelude.!!fromList的定义也不是。我相信列表本身的定义必须以某种方式涉及!!。检查您的来源,并且不要使用!!

相关内容

  • 没有找到相关文章

最新更新