Salut à tous,
j'étais en train de résoudre un problème sur codingames et pour cela j'ai fait une fonction qui transforme une chaîne de caractères en une liste d'entiers que voici
1 2 | toInt :: String -> [Int] toInt str = map (read::String->Int) $ words str |
Et donc comme la fonction se présente et grâce à la curryfication je me suis dit que je pouvais l'écrire ainsi
1 2 | toInt :: String -> [Int] toInt = map (read::String->Int) $ words |
hors cette écriture me renvoie cette erreur
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | Prelude> :l test [1 of 1] Compiling Main ( test.hs, interpreted ) test.hs:398:9: Couldn't match expected type ‘String -> [Int]’ with actual type ‘[Int]’ In the expression: map (read :: String -> Int) $ words In an equation for ‘toInt’: toInt = map (read :: String -> Int) $ words test.hs:398:35: Couldn't match expected type ‘[String]’ with actual type ‘String -> [String]’ Probable cause: ‘words’ is applied to too few arguments In the second argument of ‘($)’, namely ‘words’ In the expression: map (read :: String -> Int) $ words Failed, modules loaded: none. |
et je ne comprends vraiment pas pourquoi. Donc si vous connaissez la solution et que vous pouvez m'expliquer mon erreur je serai ravi.
Merci d'avance pour votre aide.
+0
-0