Я читаю/слушаю презентацию Криса Тейлора по алгебраическим типам данных.Подсчет алгебраических типов данных
http://chris-taylor.github.io/blog/2013/02/10/the-algebra-of-algebraic-data-types/
И есть раздел о типах функций. В частности, пример
data Bool = True | False
data Trio = First | Second | Third
Учитывая закон
a -> b == B^A
Учитывая
Trio -> Bool should equal 8
Почему 8, а не 6 с помощью умножения?
Если я правильно понять это, конкретные комбинации должны быть
First -> True
First -> False
Second -> True
Second -> False
Third -> True
Third -> False
не то, что только 6 конкретные реализации Trio -> Bool
?
Что мне не хватает?