#include
struct point{
double x, y;
};
typedef struct point point;
void move(point *p, double dx, double dy){
p>x += dx;
p>y += dy;
}
int main(void) {
point p = {5.0, 7.0};
printf("p: (%lf, %lf)\n", p.x, p.y);
move(&p, 1.0, 2.0);
printf("p: (%lf, %lf)\n", p.x, p.y);
return 0;
}  (define (makepoint x y)
(list 'point x y))
(define pointx (compose car cdr))
(define pointy (compose car (compose cdr cdr)))
(define p (makepoint 5.0 7.0))
(define (move p dx dy)
(makepoint (+ (pointx p) dx) (+ (pointy p) dy)))
> p
(point 5.0 7.0)
> (define q (move p 1 2))
> q
(point 6.0 9.0)
