Map and FOOP context functions

Started by Jeff, June 03, 2008, 10:35:47 AM

Previous topic - Next topic

Jeff

Can these not be used in map and other higher order functions, like apply and filter?
Jeff

=====

Old programmers don\'t die. They just parse on...



http://artfulcode.net\">Artful code

Lutz

#1
(define (Class:Class)
(cons (context) (args)))

(new Class 'Rectangle)
(new Class 'Circle)

(define (Rectangle:area p)
(mul (p 3) (p 4)))

(define (Circle:area c)
(mul (pow (c 3) 2) (acos 0) 2))

(set 'myrect (Rectangle 5 5 10 20))
(set 'mycircle (Circle 1 2 10))

(map (curry :area) (map eval '(myrect mycircle))) => (200 314.1592654)

(map (curry :area) '((Rectangle 5 5 10 20)(Circle 1 2 10))) => (200 314.1592654)


remember that:


(:area myrect)

; same as

(: area myrect)


So its really the ':' operator which gets applied by 'map' or 'apply'. For that reason the 'area' parameter has to be curried.

Jeff

#2
Gotcha.  Thank you.
Jeff

=====

Old programmers don\'t die. They just parse on...



http://artfulcode.net\">Artful code