[Haskell-cafe] Type-level lazy bool operations
olshanskydr at gmail.com
Sun Nov 15 13:13:31 UTC 2015
There are some type-level boolean operation (If, &&, ||, Not) in Data.Type.Bool.
Are they lazy enough?
I faced with problem and it seems that the reason is non-lazy "If".
I.e. both (on-True and on-False) types are trying to be calculated.
Does it work in this way really? Could it be changed?
Then, looking into source I see such definition for (&&)
-- | Type-level "and"
type family a && b where
'False && a = 'False
'True && a = a
a && 'False = 'False
a && 'True = a
a && a = a
Why we need the last three rules? Does it mean that an order of type
calculation is totaly undefined?
More information about the Haskell-Cafe