gpt4 book ai didi

haskell - “replace equals by equals” 是什么意思

转载 作者:行者123 更新时间:2023-12-03 13:32:02 28 4
gpt4 key购买 nike

我是 Haskell 新手,正在阅读:

http://www.seas.upenn.edu/~cis194/spring13/lectures/01-intro.html

它指出“在 Haskell 中,你总是可以“用等号替换等号”,就像你在代数课上学到的一样。”。这是什么意思,它的优点是什么?

我不记得在代数中学习过这个,但也许我不认识这个术语。

最佳答案

这意味着,如果您知道 A(一个表达式)等于 B(另一个表达式),那么您可以在任何涉及 A 的表达式中始终将 B 替换为 A,反之亦然。

例如,我们知道 even = not . odd 。所以

   filter even
=
filter (not . odd)

另一方面,我们知道 odd 满足以下等式
 odd = (1 ==) . (`mod` 2)

因此,我们也知道
   filter even
=
filter (not . odd)
=
filter (not . (1 ==) . (`mod` 2))

此外,您知道 mod 2 总是返回 01 。因此,通过案例分析,以下内容是有效的。
   not . (1 ==)
=
(0 ==)

因此,我们也可以说
  filter even
=
filter ((0 ==) . (`mod` 2))

能够用等式替换等式的优点是设计一个程序,通过对等式一个接一个的按摩直到找到合适的定义,就像在代数的 x 类问题的典型求解中一样。

关于haskell - “replace equals by equals” 是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30145271/

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