Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Haskell中创建随机布尔生成器?_Haskell - Fatal编程技术网

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

如何在Haskell中创建随机布尔生成器?,haskell,Haskell,我是Haskell的新手,我正在尝试编写一个随机布尔生成器。我能够创建一个函数,生成随机布尔值并将其保存到列表中。我想定义一个提取列表值的函数 这就是我到目前为止所做的 import System.Random import Control.Monad makeBool:: Int -> IO [Bool] makeBool n = replicateM n randomIO extractBool:: IO [Bool] -> Bool extractBool x = x !

我是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.

您只需将结果绑定到一个变量,并将其馈送到任何不需要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
导入系统。随机
进口管制
makeBool::Int->IO[Bool]
makeBool n=replicItem n randomIO
useBoolList::[Bool]->字符串
useBoolList[]=“”
useBoolList(x:xs)=(如果x==True,则“T”或“F”)++useBoolList-xs
printList=do

l一旦你进入
IO
你就永远不能离开。制定一个不需要离开的新计划。