我添加了多个Word8
值。因为这可能导致溢出,结果必须是Word16
。
是否有更好的方法将所有这些值添加到一起,而不是以下内容:
fromIntegral a + fromIntegral b + fromIntegral c + fromIntegral d + ...
这会使代码混乱而不会增加任何清晰度?
答案 0 :(得分:6)
如果您需要混合操作(正如您在评论中所建议的那样),您可以使用此技巧来批量分配新变量
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