我有许多 Word8 值要加在一起。因为这可能会导致溢出,所以结果必须是 Word16

有没有比以下更好的方法将所有这些值加在一起:

fromIntegral a + fromIntegral b + fromIntegral c + fromIntegral d + ...

这使代码困惑而没有真正增加任何清晰度?

最佳答案

如果您需要混合操作(正如您在评论中建议的那样),您可以使用此技巧来批量分配新变量

let [a', b', c', d'] = map fromIntegral [a, b, c, d]
in a' + b' - c' + d'

但是,如果您要经常执行此类操作,则定义自己的操作可能更容易
“混合”运算符
let a !+ b = fromIntegral a + fromIntegral b
let a !- b = fromIntegral a - fromIntegral b

a !+ b !- c !+ d :: Word16

关于Haskell 在添加时重复使用 fromIntegral,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26304046/

10-10 08:08