[racket-dev] Racket Questions?
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 <dvanhorn at 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