小编use*_*057的帖子

在函数中使用时,在Haskell中返回随机类型

鉴于:

import System.Random

data Rarity = Common | Uncommon | Rare | Legendary
              deriving (Show, Eq, Ord, Enum, Bounded)
Run Code Online (Sandbox Code Playgroud)

我想要实例Random,所以我开始使用类似的东西:

randomRarity :: (RandomGen g) => g -> (Rarity, g)
randomRarity g = case random g of
  (r,g') | r < 0.50 -> (Common, g')
         | r < 0.75 -> (Uncommon, g')
         | r < 0.88 -> (Rare, g')
         | otherwise -> (Legendary, g')
Run Code Online (Sandbox Code Playgroud)

但这失败了,因为即使它知道它需要Ord从所有比较中随机,它也无法分辨出我真正想要的是随机的Float.所以我想我需要键入返回值random g,但是我遇到了一个问题:

(random g :: (Float, ???))

由于它是一个元组,我将什么声明为第二类?我尝试了类似的东西(random …

random haskell types

2
推荐指数
1
解决办法
89
查看次数

标签 统计

haskell ×1

random ×1

types ×1