如何在Haskell中创建随机布尔生成器?
我是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 !
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
你就永远不能离开。制定一个不需要离开的新计划。