Читаю book, и это говорит об определении класса типов Eq
Как реализуется реализация функции Eq typeclass: x == y = not (x/= y) x/= y = not (x == y)?
Есть две функции ==
, /=
в уравнении, и они реализуются как:
x == y = not (x /= y)
x /= y = not (x == y)
В книге говорится, что они являются взаимной рекурсией, результат функции находится в элементе другой функции.
Что я не понимаю, так это то, что я не вижу базовый случай во взаимной рекурсии, и я не понимаю, почему функции будут останавливаться и возвращать результат.
С [моим предложением] (http://hackage.haskell.org/trac/ghc/ticket/7633) - надеюсь, что в следующей версии GHC вы можете указать минимальное полное определение класса с возможностью компиляции, чтобы вы получили предупреждение, если бы не реализовали какой-либо метод. – shachaf
@ sepp2k спасибо за ваше объяснение. На самом деле, есть объяснение в книге чуть ниже, но я не мог понять, что она существует ... – code4j