Вы наверное помните мой недавний вопрос. Частично он решен: есть реализация через методы класса (см. там же). Но мне также хотелось иметь решение через паттерн матчинг. Но компилятор (напомню, что его зовут scalac) никак не принимал мое решение.
Коротко задача: есть некий абстрактный язык (синтаксис) позволяющий строить выражения двух типов: числового и логического. При этом соответственно доступны элементарные операции ("сумма", "или", "если"-выражение), но это не принципиально. Принципиальным есть то, что выражения этого языка абстрагируются от конкретных числовых и логических типов.