在编写代码时,我们使用自己对可用机器的知识编写代码。这种知识(显然)是片面的。一些工具(例如pointfree)告诉我们,如果存在一些与代码等价的函数,那就太好了。在一般情况下,该工作看起来是NP-完全的(子图同构),但在某些情况下可能是实用的。
我在想:
Test.QuickCheck进行测试等值。示例:
> :t getSum . foldMap Sum
getSum . foldMap Sum :: (Num c, Foldable t) => t c -> c
> :t sum
sum :: (Num a, Foldable t) => t a -> a
>然后,当写前者时,自动建议后者。使用pointfree样式:
$ search-equivalence 'getSum . foldMap Sum'
sum是否存在这样的工具?
https://stackoverflow.com/questions/34016436
复制相似问题