我有许多 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/