[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: In search of cool Scheme
From: |
Harvey J. Stein |
Subject: |
Re: In search of cool Scheme |
Date: |
24 May 2001 09:32:36 -0400 |
address@hidden (Harvey J. Stein) writes:
> In scheme you just do something like (depending on your macro facility):
>
> (define-macro (diff-fcn form . args)
> `(lambda args ,(differentiate form)))
>
> Then you can do:
>
> (define fprime (diff-fcn '(* x (sin x))) x u)
Full working example:
(define (diff f . vars)
(cond ((number? f)
0)
((memq f vars)
1)
((eq? (car f) '+)
`(+ ,(apply diff (cadr f) vars)
,(apply diff (caddr f) vars)))
((eq? (car f) '*)
`(+ (* ,(cadr f) ,(apply diff (caddr f) vars))
(* ,(apply diff (cadr f) vars) ,(caddr f))))))
(define-macro (diff-fcn form . args)
`(lambda ,args ,(apply diff form args)))
guile> (diff '(* x x) 'x)
(+ (* x 1) (* 1 x))
guile> (define f (diff-fcn (* x x) x))
guile> f
#<procedure f (x)>
guile> (f 0)
0
guile> (f 1)
2
guile> (f 2)
4
--
Harvey Stein
Bloomberg LP
address@hidden
- Re: In search of cool Scheme, (continued)
Re: In search of cool Scheme, Klaus Schilling, 2001/05/22
- Re: In search of cool Scheme, Hans O. Lowe, 2001/05/22
- Re: In search of cool Scheme, Hans O. Lowe, 2001/05/23
- Re: In search of cool Scheme, Harvey J. Stein, 2001/05/23
- Re: In search of cool Scheme, Hans O. Lowe, 2001/05/23
- Re: In search of cool Scheme, Harvey J. Stein, 2001/05/24
- Re: In search of cool Scheme,
Harvey J. Stein <=
- Re: In search of cool Scheme, Hans O. Lowe, 2001/05/24
Re: In search of cool Scheme, Alex Shinn, 2001/05/22