
Wolfgang Jeltsch wrote:
Am Donnerstag, 9. Oktober 2008 10:41 schrieb Bart Massey:
nubBool = take 2 . nub
Hmm, I wrote that.
nub [False,True,undefined] => _|_
Surely you mean False : True : _|_
but
nubBool [False,True,undefined] => [False,True]
right? Is this really intended?
Yes. It's a feature. I'm perfectly happy with nub :: [Bool] -> [Bool] ⊑ nubBool, which means that pure functions using 'nubBool' will never fail when using 'nub' instead works, because pure functions are monotonous. Most of the time, relaxing the strictness of functions is not a problem.
Take care. Bool has three values (False, True and _|_). This is no Agda. ;-)
Yes, I know. But for some reason people rarely try to actually evaluate a _|_ value, even in Haskell. ;-) Bertram