diff --git a/csys/csys.lisp b/csys/csys.lisp index e5e5b29..7db4da8 100644 --- a/csys/csys.lisp +++ b/csys/csys.lisp @@ -37,28 +37,6 @@ (zero (make-neuron nil :proc eff-proc))) (setf (gethash '(:init :zero) (sensors *environment*)) (list zero)))) -;;;; sensors: neurons receiving messages from environment, addressable via message head - -(defun send-message (head data &key customer) - (send (message:create head :data data :customer customer))) - -(defun send (msg) - (if (eq (shape:head-value msg :domain) :csys) - (dolist (sn (find-sensors msg)) - (actor:send sn msg)) - (core:handle-message core:*root* msg))) - -(defun find-sensors (msg) - (let* ((key (cddr (shape:head msg))) - (sns (gethash key (sensors *environment*)))) - (util:lgi key sns) - sns)) - -;;;; detectors: pseudo-neurons embedded in environment, addressable via message head - -(defun do-log (msg state syns env) - (util:lgi msg)) - ;;;; neurons (= behavior factories) and synapses (connection factories) (defun neuron (proc &optional state syns (env *environment*)) @@ -78,14 +56,35 @@ (defun update-neuron (proc state syns &optional (env *environment*)) (actor:become (neuron proc state syns env))) -;;;; predefined neuron processors and helper / utility funtions - (defun std-proc (msg state syns env) ;(util:lgi msg state) (destructuring-bind (nmsg nst nsyns) (handle-action msg state syns env :default #'remember) (forward nmsg nsyns) (update-neuron #'std-proc nst nsyns env))) + + ;;;; sensors: neurons receiving messages from environment, addressable via message head + +(defun send-message (head data &key customer) + (send (message:create head :data data :customer customer))) + +(defun send (msg) + (dolist (sn (find-sensors msg)) + (actor:send sn msg))) + +(defun find-sensors (msg) + (let* ((key (cddr (shape:head msg))) + (sns (gethash key (sensors *environment*)))) + ;(util:lgi key sns) + sns)) + +;;;; effectors: pseudo-neurons embedded in environment + +(defun do-log (msg state syns env) + (util:lgi msg)) + + +;;;; helper / utility funtions (defun forward (msg syns) (dolist (s syns) @@ -102,6 +101,7 @@ (list msg state syns)) (defun remember (msg state syns env) + ;(list msg (make-neuron-state (shape:data msg) syns)) (list msg (shape:data msg) syns)) (defun create-sensor (msg state syns env)