Skip to content

Instantly share code, notes, and snippets.

@moniyax
Created September 22, 2015 19:10
Show Gist options
  • Save moniyax/200ff57d342c2c1057b8 to your computer and use it in GitHub Desktop.
Save moniyax/200ff57d342c2c1057b8 to your computer and use it in GitHub Desktop.
#lang racket
(define (Pt x y)
(let ([self 0])
(begin
(define (obj method)
(case method
[("getX") (lambda () x)]
[("getY") (lambda () y)]
[("moveX") (lambda (newx) (Pt (+ newx ((self "getX"))) y))]))
(set! self obj)
obj)))
(define pt (Pt 6 7))
((pt "getX"))
((pt "getY"))
(define pt2 ((pt "moveX") 67))
(list ([pt2 "getX"]) ([pt2 "getY"]))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment