Il y a une liste lc
utilisation Set.fromList, obtenir erreur « Prelude !!:. Index trop grand »
*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
Je voudrais savoir la cardinalité de cette liste, j'ai donc essayé de convertir cette liste à un ensemble en faisant:
*Main Lib MetaDefinition WHparseCSV WHparseTxT Set> import Data.Set as Set
*Main Lib MetaDefinition WHparseCSV WHparseTxT Set> let sc = Set.fromList <$> lc
cependant, quand je suis en train de calculer la cardinalité, je suis l'erreur:
*Main Lib MetaDefinition WHparseCSV WHparseTxT Set> length <$> sc
*** Exception: Prelude.!!: index too large
le type de sc
est correct:
*Main Lib MetaDefinition WHparseCSV WHparseTxT Set> :info sc
sc :: IO (Set Int) -- Defined at <interactive>:19:5
et je pense que length
fonctionne bien quand ils sont utilisés pour calculer la valeur du type fromList :: [Int] -> Set Int
Je voudrais vraiment savoir ce qui cause cette Exception: Prelude.!!: index too large
. est-ce parce que ce set
est dans la monade IO
?
La cardinalité d'un ['Data.Set'] (http://hackage.haskell.org/package/containers-0.5.10.2/docs/Data-Set.html#size) est calculée par' size' non par «longueur». – Cirquit
@Cirquit, 'longueur' devrait fonctionner aussi bien. – dfeuer