PasteRack.org
Paste # 87386
2020-11-08 11:36:40

Fork as a new paste.

Paste viewed 333 times.


Embed:

plain racket classes and mixins

  1. #lang racket/base
  2.  
  3. (require racket/class)
  4.  
  5.  
  6. (define recipe%
  7.   (class object%
  8.     (init name #;steps )
  9.     (super-new)
  10.     (define _name name)
  11.     ;(define _steps steps)
  12.     ;(define/public (get-steps) _steps)
  13.     (define/public (get-name) _name)))
  14.  
  15.  
  16. (define (amount-mixin %)
  17.   (class %
  18.     (init amount)
  19.     (define _amount amount)
  20.     (super-new)
  21.     (inherit get-name)
  22.     (define/public (get-amount) _amount)))
  23.  
  24.  
  25. (define (unit-mixin %)
  26.   (class %
  27.     (init unit)
  28.     (define _unit unit)
  29.     (super-new)
  30.     (inherit get-name)
  31.     (define/public (get-unit) _unit)))
  32.  
  33.  
  34. (unit-mixin (amount-mixin recipe%))

=>

#<class:unit-mixin>