gpt4 book ai didi

haskell - 是否可以通过以下方式比较 haskell 中的 `(+), (-)` 这样的运算符?

转载 作者:行者123 更新时间:2023-12-02 14:36:07 24 4
gpt4 key购买 nike

elem 命令允许我们执行以下操作:

elem 1 [1,2,3] = True

elem (Just 4) [(Just 5)] = False

我的问题是这是否可以在数学运算符上完成。

例如:

elem (+) [(+), (-), div]

elem::(Eq a, Foldable t) => a -> t a -> Bool(+) 的定义来看,这似乎是不可能的code> 是 Num a => a -> a -> a

那么如何测试这一点呢?

最佳答案

是的, universe 包提供有限域上所有函数的相等性检查——但要付出一定的代价。

Data.Universe.Instances.Reverse Data.Word> elem (+) [(+), (-), (*) :: Word8 -> Word8 -> Word8]
True
Data.Universe.Instances.Reverse Data.Word> elem (+) [(-), (*) :: Word8 -> Word8 -> Word8]
False

什么价格?比较是通过将该函数应用于所有可能的输入并比较相应的输出来完成的。以Word8为例只有大约 60k 个输入,因此在眨眼之前完成它是可行的,但不要尝试 Int -> Int -> Int 上的第一个输入...

关于haskell - 是否可以通过以下方式比较 haskell 中的 `(+), (-)` 这样的运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55408679/

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