extend-transition* and prefix-transition*

This commit is contained in:
Tony Garnock-Jones 2012-06-11 16:10:00 -04:00
parent cabdd27917
commit a40dbe0d97
2 changed files with 18 additions and 1 deletions

View File

@ -1,6 +1,7 @@
;; Emacs indent settings
(progn
(mapcar #'(lambda (x) (put x 'scheme-indent-function 1))
'(transition extend-transition prefix-transition))
'(transition extend-transition prefix-transition
extend-transition* prefix-transition*))
(mapcar #'(lambda (x) (put x 'scheme-indent-function 2))
'(role role/fresh yield)))

16
os2.rkt
View File

@ -21,7 +21,9 @@
(except-out (struct-out transition) transition)
(rename-out [make-transition transition])
extend-transition
extend-transition*
prefix-transition
prefix-transition*
role
role/fresh
@ -213,11 +215,25 @@
[(transition state actions) (transition state (list actions more-actions))]
[state (transition state more-actions)]))
(define (extend-transition* t fn)
(match t
[(transition state actions)
(prefix-transition (fn state) actions)]
[state
(fn state)]))
(define (prefix-transition t . more-actions)
(match t
[(transition state actions) (transition state (list more-actions actions))]
[state (transition state more-actions)]))
(define (prefix-transition* t fn)
(match t
[(transition state actions)
(extend-transition (fn state) actions)]
[state
(fn state)]))
;;---------------------------------------------------------------------------
;; Topics and roles