【发布时间】:2015-03-06 20:53:58
【问题描述】:
我有以下代码(yyyy 和 mm 定义为类型 Int):
partOne = truncate ((fromIntegral yyyy + fromIntegral mm/100) * 1.25 + 0.97)
加载到 GHCi 时出现错误:
没有因使用“截断”而产生的 (Integral Float) 实例但是,如果我直接在 GHCi 中使用以下行,它就可以正常工作:
truncate ((fromIntegral 2000 + fromIntegral 04/100) * 1.25 + 0.97)
Int 类型似乎存在一些问题,但我不知道如何解决。
另外,实际上我并不完全理解(Integral Float) 在这里的含义。
为了完整起见,这里包含了整个函数的定义,以防错误是由整个事物而不是单个语句引起的:
dowNumber :: Mnemonic -> PhonePad -> Date -> Float
dowNumber mn p (yyyy, mm, dd) = (partOne + partTwo) / 7 where
partOne = (truncate ((fromIntegral yyyy + (fromIntegral mm)/100) * 1.25 + 0.97))
partTwo = fromIntegral ((monthToPhone mn p mm) + dd)
Mnemonic 只是 String 和 PhonePad 是 [(Char, Int)]。 Date 是 (Int, Int, Int)。
【问题讨论】:
-
注意:StackOverflow 的 markdown 变体不知道有围栏的代码块,你需要使用缩进。