In Haskell there is CT creating an algebra. In CL there is the management of
nil that resembles a smart algebra, effective for many examples of CL code:
- nil is equal to false
- empty list is nil
- every value different from nil is true
- in CL every value can be considered like a boolean
orand other functions working on booleans are extremely composable, because they recognize when something fail.
Probably this behaviour is similar to the Dok transaction-logic behaviour.