Возможно ли реализовать (*)
с наименее строгой семантикой в Haskell (стандартизованный Haskell предпочтительнее, но расширения в порядке. Использование внутренних компонентов компилятора обманывает)? Например, такое определение должно приводить к следующему:
0 * ⊥ = 0
⊥ * 0 = 0
и только:
⊥ * ⊥ = ⊥
Я могу построить совпадения шаблонов, которые удовлетворяют одному из вышеуказанных случаев, но не оба, потому что проверка нуля заставляет значение.