这可能是一个愚蠢的问题,或者至少是一个对演员模型有一些错误假设的问题,但也许有人可以教育我。假设我设置了一个类似于cl-actors示例文档中的示例 actor
cl-user> (ql:quickload :cl-actors)
:CL-ACTORS
cl-user> (use-package :cl-actors)
T
cl-user> (defactor echo (stream) (message)
(format stream "~a~%" message)
next)
ECHO
cl-user> (defparameter e (echo :stream *standard-output*))
E
cl-user> (send e "Test message")
Test Message
; No value
为什么; No value
那里而不是NIL
?有没有办法在不杀死演员线程的情况下获取返回值(bt:join-thread (cl-actors::get-thread e))
(我怀疑在任何情况下都不会完全按照我的意愿去做)?我特别想获得返回值,而不是玩弄with-output-to-string
或类似的把戏。
如果您关心的话,我试图解决的更普遍的问题是尝试将来自参与者的信息输出到cl-who
客户端的页面中。类似的东西
(with-html-output (s)
(:h1 (send e "Test message")))
send
如果不返回任何东西,这显然是行不通的。如果特定问题实际上被证明是愚蠢的,则欢迎就更普遍的问题提出建议。