Give alternate default definition for (<=)

Dannyu NDos ndospark320 at gmail.com
Fri May 8 01:51:08 UTC 2020


"defaultLTorEQ" would be a better name, since it's for (<=), not (<).

2020년 5월 8일 (금) 오전 10:49, Dannyu NDos <ndospark320 at gmail.com>님이 작성:

> I have following datatype for representing arbitrary computable numbers:
>
>     newtype Computable = Inexact (Word -> Integer)
>
> "Inexact" encapsulates Cauchy sequences.
>
> min and max will halt:
>
>     instance Ord Computable where
>         min (Inexact f) (Inexact g) = Inexact (\n -> min (f n) (g n))
>         max (Inexact f) (Inexact g) = Inexact (\n -> max (f n) (g n))
>
> But comparison functions won't halt for same numbers:
>
>         compare (Inexact f) (Inexact g) = go 0 where
>             go n = compare (f n) (g n) <> go (n+1)
>
> So in this case, it would be inappropriate to defaultly define min and max.
>
> It would be nice if there was a function for alternately defining
> comparison functions:
>
>     defaultLessThan :: Ord a => a -> a -> Bool
>     defaultLessThan x y = x == y || x == min x y
>
> Then we can let (<=) = defaultLessThan.
>
> Also I have to mention that the "realAbs" function I suggested in January
> must be the following definition in this regard:
>
>     realAbs x = max x (negate x)
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20200508/4ad07bf5/attachment.html>


More information about the Libraries mailing list