gpt4 book ai didi

haskell - 添加与进行Word8

转载 作者:行者123 更新时间:2023-12-02 17:17:33 25 4
gpt4 key购买 nike

我找不到函数addWithCarry :: Word8 -> Word8 -> (Word8, Bool)已在 base 中定义。唯一记录为关心进位的函数似乎是 addIntC#GHC.Prim但它似乎永远不会通过各种抽象层向上推。

我显然可以通过测试输出值是否在范围内来推出我自己的,这实际上就是我当前正在做的事情,但我宁愿重用一个(可能更有效)已经定义的值。

有这样的事吗?

最佳答案

如果你看the source for Word8's Num instance ,您将看到一切都是通过转换为 Word# 未装箱值并对其执行操作,然后缩小到 8 位值来完成的。我怀疑对 Word# 值进行比较会更有效,所以我实现了这样的事情。这是available on lpaste (我发现它比 StackOverflow 更容易阅读)。

请注意,它包括测试套件和 Criterion 基准测试。在我的系统上,所有各种测试对于盒装版本(user5402 的实现)大约需要 31 纳秒,对于 primops 版本大约需要 24 纳秒。

上面 lpaste 中的重要函数是 primops,它是:

primops :: Word8 -> Word8 -> (Word8, Bool)
primops (W8# x#) (W8# y#) =
(W8# (narrow8Word# z#), isTrue# (gtWord# z# 255##))
where
z# = plusWord# x# y#

关于haskell - 添加与进行Word8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27204425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com