On Jan 6, 2012, at 8:39 AM, John Clements wrote: > > On Jan 5, 2012, at 5:30 PM, Sam Tobin-Hochstadt wrote: > >> On Fri, Jan 6, 2012 at 1:00 AM, John Clements <cleme...@brinckerhoff.org> >> wrote: >>> >>> Examining the difference between Inexact-Real and Float yields this: >>> >>>> (:type Float) >>> (U Float-Positive-Zero Float-Negative-Zero Float-Nan Positive-Float >>> Negative-Float) >>>> (:type Inexact-Real) >>> (U Float-Positive-Zero Float-Negative-Zero Float-Nan Positive-Float >>> Negative-Float Single-Flonum-Positive-Zero Single-Flonum-Negative-Zero >>> Single-Flonum-Nan Positive-Single-Flonum Negative-Single-Flonum) >>> >>> ...which actually made me laugh out loud. Is there a predicate I can use >>> instead of 'inexact-real?' that checks whether a number belongs to the type >>> Float? >> >> You can use `flonum?' as the predicate for `Float', which excludes >> single-precision floats. But why do you want to exclude them? > > I have no desire to exclude them. After inspecting the expansion of various > types such as Real, I concluded that Float was the term for a floating-point > representation, but clearly I was mistaken. I have to say, the numeric tower > in TR is ... impressive. :)
Three thoughts: 1) Not all of the types printed in (:print-type Foo) are necessarily bound in the user code, right? I tried at one point substituting the result of (:print-type something-or-other) for something-or-other, and got a message about an unbound variable. 2) It would be great to have a one-sentence description of each type. In my case, for instance, I clearly did not deduce that the 'single' in 'Positive-Single-Flonum' referred to single-precision. 3) What would be *really* awesome would be a tool that accepted a function and a desired output type, and pruned the type of the function so that I could discover what kind of input I had to provide in order to get that kind of output. I find myself repeatedly plowing through enormous types trying to find a clause that will do what I want. Just thoughts, John
smime.p7s
Description: S/MIME cryptographic signature
____________________ Racket Users list: http://lists.racket-lang.org/users