首页 > 解决方案 > 如何正确从haskell中的两个选项中随机选择?

问题描述

我想编写一个函数,它需要一个字符串和一个字符,并随机地将字符添加或附加到字符串。

我写了这个,但它不起作用,因为某些类型签名是最后一行:

join :: RandomGen g => [Char] -> Char -> g -> ([Char], g)
join letters letter g = if inverse
                        then (letter:letters, newG)
                        else (letters ++ [letter], newG)
                        where (inverse, newG) = random g :: (Bool, RandomGen)

我得到的错误:

• Expecting one more argument to ‘RandomGen’
  Expected a type, but ‘RandomGen’ has kind ‘* -> Constraint’
• In an expression type signature: (Bool, RandomGen)
  In the expression: random g :: (Bool, RandomGen)
  In a pattern binding:
    (inverse, newG) = random g :: (Bool, RandomGen)

那么如何正确生成一个布尔值并从函数中返回新的生成器呢?

标签: haskell

解决方案



推荐阅读