Haskell定义带有边界的数字类型

时间:2016-01-22 13:52:21

标签: haskell

我正在学习Haskell,并希望通过概率分布探索最佳实用编码功能。

使用概率函数进行编码时,函数通常应在[0,1]中返回Float值。

是否可以定义"概率"只能获取该范围内值的数据类型?

非常感谢!

1 个答案:

答案 0 :(得分:1)

你问的不简单。就个人而言,我宁愿使用像这样的函数:

checkBounds :: (Real a, Show a) => a -> a 
checkBounds x | 0 <= x && x <= 1 = x
          | otherwise = error $ show x ++ " is not in [0,1]"

但是如果你想更进一步,看看这个articleprobability packagecode snippet,也许他们可以提供帮助。