I'm reading/listening to Chris Taylor's presentation on algebraic data types.
http://chris-taylor.github.io/blog/2013/02/10/the-algebra-of-algebraic-data-types/
And there's a section on function types. Specifically the example
data Bool = True | False
data Trio = First | Second | Third
Given the law
a -> b == B^A
Given
Trio -> Bool should equal 8
Why 8 and not 6 via multiplication?
If I'm understanding this correctly, the concrete combinations should be
First -> True
First -> False
Second -> True
Second -> False
Third -> True
Third -> False
Isn't that just 6 concrete implementations of Trio -> Bool
?
What am I missing?