2 votes

Comment créer un générateur booléen aléatoire en Haskell ?

Je suis nouveau en Haskell et j'essaie d'écrire un générateur booléen aléatoire. J'ai pu créer une fonction qui génère un booléen aléatoire et l'enregistre dans une liste. Je veux définir une fonction qui extrait la valeur de la liste.

Voici ce que j'ai fait jusqu'à présent

import System.Random
import Control.Monad

makeBool:: Int -> IO [Bool]
makeBool n = replicateM n randomIO

extractBool:: IO [Bool] -> Bool 
extractBool x = x !! 0

Cependant, j'obtiens cette erreur, veuillez m'aider !

* Couldn't match expected type `[Bool]'
              with actual type `IO [Bool]'
* In the first argument of `(!!)', namely `x'
  In the expression: x !! 0
  In an equation for `extractBool': extractBool x = x !! 0
Failed, modules loaded: none.

1voto

Kenneth Lo Points 11

Vous pouvez simplement lier le résultat à une variable et le transmettre à d'autres fonctions qui ne nécessitent pas d'entrées-sorties.

import System.Random
import Control.Monad

makeBool :: Int -> IO [Bool]
makeBool n = replicateM n randomIO

useBoolList :: [Bool] -> String
useBoolList [] = ""
useBoolList (x:xs) = (if x == True then "T" else "F") ++ useBoolList xs

printList = do
    l <- makeBool 10
    putStrLn $ useBoolList l

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X