Do you want to try for/sum here? 

On Oct 14, 2012, at 10:28 PM, Justin R. Slepak wrote:

> To use prop:procedure, just give a function which will handle the application 
> of the structure to some arguments. The define-values is only there because 
> the for/fold has two accumulators (sum and x) and will therefore return two 
> values (the values of those accumulators). This means its context has to 
> expect two values, even though we don't really care about the second value. 
> The x* is just a name.
> 
> ---
> Justin Slepak
> PhD student, Computer Science dept.
> 
> ----- Original Message -----
> From: Gregory Woodhouse <gregwoodho...@me.com>
> To: Justin R. Slepak <jrsle...@ccs.neu.edu>
> Sent: Sun, 14 Oct 2012 22:07:59 -0400 (EDT)
> Subject: Re: [racket] Function composition in Racket
> 
> Thanks! This does what I want. To tell you the truth, I've shied away from 
> prop:procedure (probably more due to my own confusion than anything else!). 
> The define-values here seems a bit mysterious, but I assume the point is to 
> support the recursive polynomial evaluation function? Is x* a special syntax 
> here or just a name. I see sum in both for/fold and values, but the x* in 
> define-values is mysterious.
> 
> On Oct 14, 2012, at 4:57 PM, "Justin R. Slepak" <jrsle...@ccs.neu.edu> wrote:
> 
>> Instead of trying to peek inside a lambda, you could implement polynomials 
>> as (transparent) structs and use prop:procedure to allow them to be applied 
>> to numbers:
>> 
>> (struct polynomial (coeffs)
>> #:transparent
>> #:property prop:procedure
>> (lambda (poly num)
>>   (define-values (result x*)
>>     (for/fold ([sum 0]
>>                [x 1])
>>       ([c (polynomial-coeffs poly)]) 
>>       (values (+ sum (* c x))
>>               (* x num))))
>>   result))
>> 
>> This would let you implement functions that crunch on polynomials. As for 
>> using existing operators' names, maybe generics can get you that?
>> 
>> ---
>> Justin Slepak
>> PhD student, Computer Science dept.
> 
> 
> ____________________
>  Racket Users list:
>  http://lists.racket-lang.org/users


____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to