gpt4 book ai didi

haskell - 列表 Haskell 中的随机元素

转载 作者:行者123 更新时间:2023-12-04 03:26:41 24 4
gpt4 key购买 nike

我试图从列表中获取一个随机 Int 并且我遇到了一些问题,因为我们被允许使用的唯一库是 QuickCheck , GHC.IOData.List .
到目前为止,我设法通过使用以下方法获得随机 IO Int:

ran :: Gen Int
ran = choose (0,3)
(列表长度=4)
但是当我打电话
elem = list !! generate ran
我得到: Couldn't match expected type ‘Int’ with actual type ‘IO Int’而且我很确定您不能仅从 IO Int 中“提取” Int,所以我有点迷失了。
有任何想法吗?

最佳答案

您可以使用 fmap使得 elemIO Int :

elem :: IO Int
elem = fmap (list !!) (generate ran)
或者我们可以使用运算符(operator)别名 fmap : (<$>) :
elem :: IO Int
elem = (list !!) <$> generate ran
可能会更好,如 @AndrewRay says , 使用另一个名称,因为 Prelude已经包含 elem功能。例如 randElem :
randElem :: IO Int
randElem = (list !!) <$> generate ran

关于haskell - 列表 Haskell 中的随机元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67493634/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com