cl-ds / data /repos /cl-flow /src /dynamically.lisp
j14i's picture
3375 CL macro transformation examples from 85 libraries
43203b4 verified
Raw
History Blame Contribute Delete
752 Bytes
(cl:in-package :cl-flow)
;;;
;;; DYNAMICALLY
;;;
(defun dispatch-dynamically (flow-context body-fu)
(declare (type (function (t) *) body-fu)
#.+optimize-form+)
(push-flow-stack flow-context (funcall body-fu (flow-context-value flow-context)))
(dispatch-rest flow-context))
(defmacro dynamically (lambda-list &body body)
"Generates new flow dynamically during parent flow execution. In other words,
injects new dynamically created flow into a current one. Non-consing."
(flow-lambda-macro (flow-context)
(with-flow-function-macro (body-fu lambda-list body)
`(dispatch-dynamically ,flow-context #',body-fu))))
(defmacro ->> (lambda-list &body body)
"See flow:dynamically"
`(dynamically ,lambda-list
,@body))