• [^] # Autre petit problème

    Posté par . En réponse au message Haskell. Évalué à 1.

    Bonjour,
    j'ai un nouveau soucis, cette fois c'est une histoire de IO.
    j'ai une fonction shuffle qui mélange une liste donnée (de type [a]) et qui renvoie cette liste mélangée alétoirement (de type IO [a]).
    Cependant, je veux utiliser cette fonction shuffle dans une autre fonction (qui ne prend pas de IO [a] en argument mais [a]).
    Je voudrais donc en quelque sorte convertir xs :: IO [Integer] en xs :: [Integer] pour ne pas avoir de soucis dans la fonction qui utilise shuffle.

    Voici ma fonction shuffle :

    shuffle' [] acc = return acc
    shuffle' l acc =
    do k <- randomRIO (0, length l - 1)
    let (lead, x:xs) = splitAt k l
    shuffle' (lead ++ xs) (x:acc)

    shuffle :: [a] -> IO [a]
    shuffle l = shuffle' l []


    Merci.