如何在Haskell中创建一个随机布尔生成器?

时间:2017-05-04 03:45:40

标签: haskell

我是Haskell的新手,我正在尝试编写一个随机布尔生成器。我能够创建一个生成随机布尔值的函数并将其保存到列表中。我想定义一个提取列表值的函数。

这是我到目前为止所做的事情

import System.Random
import Control.Monad

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

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

然而,我收到此错误,请帮助!!

* 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.

1 个答案:

答案 0 :(得分:1)

您可以将结果绑定到变量并提供给任何其他不需要I / O的函数。

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