:: Print what your agent is doing. :: /- verb :: |= [loud=? =agent:gall] =| bowl-print=_| ^- agent:gall |^ !. |_ =bowl:gall +* this . ag ~(. agent bowl) :: ++ on-init ^- (quip card:agent:gall agent:gall) %- (print bowl |.("{}: on-init")) =^ cards agent on-init:ag [[(emit-event %on-init ~) cards] this] :: ++ on-save ^- vase %- (print bowl |.("{}: on-save")) on-save:ag :: ++ on-load |= old-state=vase ^- (quip card:agent:gall agent:gall) %- (print bowl |.("{}: on-load")) =^ cards agent (on-load:ag old-state) [[(emit-event %on-load ~) cards] this] :: ++ on-poke |= [=mark =vase] ^- (quip card:agent:gall agent:gall) %- (print bowl |.("{}: on-poke with mark {}")) ?: ?=(%verb mark) ?- !<(?(%loud %bowl) vase) %loud `this(loud !loud) %bowl `this(bowl-print !bowl-print) == =^ cards agent (on-poke:ag mark vase) [[(emit-event %on-poke mark) cards] this] :: ++ on-watch |= =path ^- (quip card:agent:gall agent:gall) %- (print bowl |.("{}: on-watch on path {}")) =^ cards agent ?: ?=([%verb %events ~] path) [~ agent] (on-watch:ag path) [[(emit-event %on-watch path) cards] this] :: ++ on-leave |= =path ^- (quip card:agent:gall agent:gall) %- (print bowl |.("{}: on-leave on path {}")) ?: ?=([%verb %event ~] path) [~ this] =^ cards agent (on-leave:ag path) [[(emit-event %on-leave path) cards] this] :: ++ on-peek |= =path ^- (unit (unit cage)) %- (print bowl |.("{}: on-peek on path {}")) (on-peek:ag path) :: ++ on-agent |= [=wire =sign:agent:gall] ^- (quip card:agent:gall agent:gall) %- (print bowl |.("{}: on-agent on wire {}, {<-.sign>}")) =^ cards agent (on-agent:ag wire sign) [[(emit-event %on-agent wire -.sign) cards] this] :: ++ on-arvo |= [=wire =sign-arvo] ^- (quip card:agent:gall agent:gall) %- %+ print bowl |. "{}: on-arvo on wire {}, {<[- +<]:sign-arvo>}" =^ cards agent (on-arvo:ag wire sign-arvo) [[(emit-event %on-arvo wire [- +<]:sign-arvo) cards] this] :: ++ on-fail |= [=term =tang] ^- (quip card:agent:gall agent:gall) %- (print bowl |.("{}: on-fail with term {}")) =^ cards agent (on-fail:ag term tang) [[(emit-event %on-fail term) cards] this] -- :: ++ print |= [=bowl:gall render=(trap tape)] ^+ same =? . bowl-print %- (slog >bowl< ~) . ?. loud same %- (slog [%leaf $:render] ~) same :: ++ emit-event |= =event:verb ^- card:agent:gall [%give %fact ~[/verb/events] %verb-event !>(event)] --