Skip to content

Instantly share code, notes, and snippets.

@LeifAndersen
Created September 28, 2017 16:58
Show Gist options
  • Save LeifAndersen/1318798979267ea46ae8ac3933c64989 to your computer and use it in GitHub Desktop.
Save LeifAndersen/1318798979267ea46ae8ac3933c64989 to your computer and use it in GitHub Desktop.
#lang racket
(provide (all-defined-out))
(module sub racket
(provide key)
(define key (generate-member-key)))
(require 'sub
(for-syntax syntax/parse))
(define-syntax (defclss stx)
(syntax-parse stx
[(_ name x)
(define f (gensym))
#`(begin
(define-member-name #,f key)
(define name
(class object%
(super-new)
(define/public (#,f) 5)
(define/public (x) 6))))]))
(defclss bob f)
(send (new bob) f)
(define-member-name bill key)
(send (new bob) bill)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment