▲ | ackfoobar 5 days ago | ||||||||||||||||||||||
A first-order function type is already exponential. A sum type has as many possible values as the sum of its cases. E.g. `A of bool | B of bool` has 2+2=4 values. Similarly for product types and exponential types. E.g. the type bool -> bool has 2^2=4 values (id, not, const true, const false) if you don't think about side effects. | |||||||||||||||||||||||
▲ | jolmg 5 days ago | parent [-] | ||||||||||||||||||||||
> bool -> bool has 2^2=4 values Not the best example since 2*2=4 also. How about this bit of Haskell:
That's 3 ^ 2 = 9, right?
Those are 6. What would be the other 3? or should it actually be a*b=6?EDIT: Nevermind, I counted wrong. Here are the 9:
| |||||||||||||||||||||||
|