il y a qqch que je n'arrive pas à comprendre dans Data.Map :
1.
pourquoi la valeur renvoyée est-elle "fromList ..." alors que fromList, de toute évidence, n'est pas un constructeur (pour qui la majusculle initiale est obligatoire).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ghci > fromList [(1 ,2) ,(3 ,4) ,(3 ,2) ,(5 ,5)] fromList [(1,2),(3,2),(5,5)] it :: Map Integer Integer
cela renvoie une valeur sous la forme d'une fonction ? ? ?
2. D'autre part ,
ok, jusque là ça va ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ghci > :t fromList fromList :: (Ord k) => [(k, a)] -> Map k a
puis :
On sent bien qu'on ne va pas aller loin avec un Map ()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 let myFromList = fromList myFromList :: [((), a)] -> Map () a
effectivement :
Pourquoi ne peut-on pas créer myFromList de cette manière ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 ghci> myFromList [(1 ,2) ,(3 ,4) ,(3 ,2) ,(5 ,5)] <interactive>:1:37: No instance for (Num ()) arising from the literal `5' at <interactive>:1:37 Possible fix: add an instance declaration for (Num ()) In the expression: 5 In the expression: (5, 5) In the first argument of `myFromList', namely `[(1, 2), (3, 4), (3, 2), (5, 5)]'
merci d'avance à ceux qui pourront m'expliquer ...
Partager