Skip to content

Instantly share code, notes, and snippets.

@okuoku
Created February 11, 2016 18:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save okuoku/d5cba6f31b781db911aa to your computer and use it in GitHub Desktop.
Save okuoku/d5cba6f31b781db911aa to your computer and use it in GitHub Desktop.
Kawa --no-inline requirement
(define-library (minitype)
(export
miniobj-minitype-ref
miniobj-minitype-set!
make-minitype-obj)
(import (scheme base) (scheme write))
(begin
(define (make-minitype-obj)
(vector "UNINITIALIZED_x" "UNINITIALIZED_y"))
(define (miniobj-minitype-ref obj slot)
(vector-ref obj slot))
(define (miniobj-minitype-set! obj slot value)
(display (list 'SET!-CALLED: slot value))(newline)
(vector-set! obj slot value))))
(define-library (minidispatch)
(export make-minidispatch-obj)
(import (scheme base)
(minitype))
(begin
(define (baseset! obj slot v)
(miniobj-minitype-set! obj slot v))
(define (make-minidispatch-obj class param)
(let ((obj (make-minitype-obj)))
(baseset! obj 0 class)
(baseset! obj 1 param)
obj))))
(import (scheme base)
(minidispatch)
(minitype))
(define (baseref obj slot)
(miniobj-minitype-ref obj slot))
(define (testfunc . bogus) 'OK)
(define (baseset! obj slot v)
(miniobj-minitype-set! obj slot v))
(define test
(let ((obj (make-minitype-obj)))
(baseset! obj 0 'test)
(baseset! obj 1 testfunc)
obj))
(define obj0 (make-minidispatch-obj test (cons "INIT1" "INIT2")))
(let* ((t (baseref obj0 0))
(o (baseref obj0 1)))
(write (list t o))(newline))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment