For the record, I've always just defined my own modulo when I need it for floats:
; A modulo operator for floats! (define (float-modulo p q) (- p (* q (truncate (/ p q))))) It doesn't properly handle negative numbers though. David Van Horn <dvanh...@ccs.neu.edu> writes: > On 9/14/12 3:36 PM, Becca MacKenzie wrote: >> Hello! >> So a friend of mine just started learning Racket and was wondering if >> there's a particular reason why the modulo function in racket only takes >> in integers? He wrote his own mod function to take in other things but >> he was just wondering what the reasoning is behind this. > > Hi Becca, > > Excellent question -- I hope you don't mind that I've forwarded it to > the Racket developers list for a more authoritative answer (and > potentially a change to Racket). > > I don't believe there's any principled reason not to extend `modulo' to > other kinds of numbers such as rationals and (exact) complex numbers. I > worry that the idea of modulo may not be well defined for inexact > numbers, but I could be wrong (inexact numbers don't obey a lot of the > usual mathematical properties we're used to). I see that in > Mathematica, "the arguments of Mod can be any numeric quantities, not > necessarily integers". Here are some examples: > > http://reference.wolfram.com/mathematica/ref/Mod.html#6881 > > Recently, Racket's GCD and LCM were extended to work on non-integer > arguments, and I believe this is a similar case where the function could > (and should?) be extended to work for more kinds of numbers. But I'm > interested to hear what the dev list has to say on the matter. > > David > > _________________________ > Racket Developers list: > http://lists.racket-lang.org/dev _________________________ Racket Developers list: http://lists.racket-lang.org/dev