<div dir="ltr">"defaultLTorEQ" would be a better name, since it's for (<=), not (<).<br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">2020년 5월 8일 (금) 오전 10:49, Dannyu NDos <<a href="mailto:ndospark320@gmail.com">ndospark320@gmail.com</a>>님이 작성:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>I have following datatype for representing arbitrary computable numbers:</div><div><br></div><div>    newtype Computable = Inexact (Word -> Integer)</div><div><br></div><div>"Inexact" encapsulates Cauchy sequences.</div><div><br></div><div>min and max will halt:</div><div><br></div><div>    instance Ord Computable where</div><div>        min (Inexact f) (Inexact g) = Inexact (\n -> min (f n) (g n))<div>        max (Inexact f) (Inexact g) = Inexact (\n -> max (f n) (g n))</div><div><br></div><div>But comparison functions won't halt for same numbers:</div><div><br></div><div>        compare (Inexact f) (Inexact g) = go 0 where</div><div>            go n = compare (f n) (g n) <> go (n+1)</div><div><br></div><div>So in this case, it would be inappropriate to defaultly define min and max.</div><div><br></div><div>It would be nice if there was a function for alternately defining comparison functions:</div><div><br></div><div>    defaultLessThan :: Ord a => a -> a -> Bool</div><div>    defaultLessThan x y = x == y || x == min x y<br></div><div><br></div><div>Then we can let (<=) = defaultLessThan.</div><div><br></div><div>Also I have to mention that the "realAbs" function I suggested in January must be the following definition in this regard:</div><div><br></div><div>    realAbs x = max x (negate x)<br></div></div></div>
</blockquote></div>