Haskell:“演员”/力型?

时间:2011-12-19 18:44:54

标签: haskell types casting

我如何说Haskell将某些东西解释为特殊类型? 例如,我有一个列表,并希望将其长度除以2。 所以我写了

(length mylist) / 2

并收到此错误

  

没有(Fractional Int)的实例         因使用`/'

而引起的

由于我想要一个整数除法,我想制作length mylist2和结果Int

2 个答案:

答案 0 :(得分:11)

这里有两个不同的问题。

  • 整数除法:使用div函数:div (length mylist) 2(length mylist) `div` 2

  • 铸造。通过编写expression :: type而不是expression,可以告诉Haskell特定表达式具有特定类型。但是,这不会对值进行任何“转换”或“转换”。用于在各种数字和字符串类型之间进行转换的一些有用函数是fromIntegralshowreadrealToFracfromRationaltoRational,{{ 1}}和其他人。您可以在Hoogle上查看这些内容。

答案 1 :(得分:5)

试试div (length my list) 2/进行分数除法; div进行整数除法。