Начните с определения одной стороны уравнения и попробуйте перейти на другую сторону.Я обычно начинаю с «более сложной» стороны и работаю в направлении более простой.Для третьего закона это не работает (обе стороны одинаково сложны), поэтому я обычно иду с обеих сторон и максимально упрощаю их, пока не доберусь до одного и того же места.Затем я могу просто изменить шаги, которые я предпринял с одной из сторон, чтобы получить доказательство.
Так, например:
return x >>= g
Затем разверните:
= Ok x >>= g
= bindError (Ok x) g
= case Ok x of { Ok v -> g v ; ... }
= g x
И, таким образом, мы доказали
return x >>= g = g x
Процесс для двух других законов примерно одинаков.