haskell - 如何正确从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)
那么如何正确生成一个布尔值并从函数中返回新的生成器呢?
解决方案
推荐阅读
- python - 如何将另一个程序的窗口移动到特定的 x 和坐标?
- php - PHP 响应 SSDP
- java - 检索 Firebase 数据库节点后如何动态制作模型?
- reactjs - 如何使单选按钮出现在 react.js 中
- javascript - 为什么当 redux 存储更新时我的组件不重新渲染?
- python - 配置格式 Python Logger 的问题
- python - 为什么策略迭代和价值迭代方法对最优值和最优策略给出不同的结果?
- python - 如何将模块用作文本?
- node.js - Express 已安装但不在 node_modules 文件夹中
- c++ - 内置 log2(x) 函数和迭代除以 2 有什么区别?