csys: get rid of env paramater - just set it in neuron lambda function

This commit is contained in:
Helmut Merz 2026-04-05 10:20:34 +02:00
parent 8bf7e8ae0c
commit 133e6ebed9
2 changed files with 29 additions and 30 deletions

View file

@ -29,39 +29,39 @@
;(defvar *environment* (make-instance 'environment)) ;(defvar *environment* (make-instance 'environment))
(defvar *environment* nil) (defvar *environment* nil)
(defun add-action (key fn &optional (env *environment*)) (defun add-action (key fn)
;(util:lgi key fn env) ;(util:lgi key fn *environment*)
(setf (gethash key (actions env)) fn)) (setf (gethash key (actions *environment*)) fn))
(defun add-sensors (key sns &optional (env *environment*)) (defun add-sensors (key sns)
;(util:lgi key sns env) ;(util:lgi key sns *environment*)
(setf (gethash key (sensors env)) sns)) (setf (gethash key (sensors *environment*)) sns))
;;;; neurons (= behavior factories) and synapses (connection factories) ;;;; neurons (= behavior factories) and synapses (connection factories)
(defun neuron (proc &optional state syns (env *environment*)) (defun neuron (proc &optional state syns (env *environment*))
(lambda (msg) (lambda (msg)
(funcall proc msg state syns env))) (let ((*environment* env))
(funcall proc msg state syns))))
(defun synapse (rcvr &optional (op #'identity)) (defun synapse (rcvr &optional (op #'identity))
(lambda (msg) (lambda (msg)
(actor:send rcvr (funcall op msg)))) (actor:send rcvr (funcall op msg))))
(defun make-neuron (syn-target &key proc state (defun make-neuron (syn-target &key proc state (syn-op #'identity))
(syn-op #'identity) (env *environment*)) (let ((proc (or proc (gethash :default (procs *environment*) #'std-proc)))
(let ((proc (or proc (gethash :default (procs env) #'std-proc)))
(syns (if syn-target (list (synapse syn-target syn-op)) nil))) (syns (if syn-target (list (synapse syn-target syn-op)) nil)))
(actor:create (neuron proc state syns env)))) (actor:create (neuron proc state syns))))
(defun update-neuron (proc state syns &optional (env *environment*)) (defun update-neuron (proc state syns)
(actor:become (neuron proc state syns env))) (actor:become (neuron proc state syns)))
(defun std-proc (msg state syns env) (defun std-proc (msg state syns)
;(util:lgi msg state syns env) ;(util:lgi msg state syns env)
(destructuring-bind (nmsg nst nsyns) (destructuring-bind (nmsg nst nsyns)
(handle-action msg state syns env :default #'remember) (handle-action msg state syns :default #'remember)
(forward nmsg nsyns) (forward nmsg nsyns)
(update-neuron (next-proc nst) nst nsyns env))) (update-neuron (next-proc nst) nst nsyns)))
;;;; neuron state methods ;;;; neuron state methods
@ -88,7 +88,7 @@
;;;; effector procs for pseudo-neurons embedded in environment ;;;; effector procs for pseudo-neurons embedded in environment
(defun do-log (msg state syns env) (defun do-log (msg state syns)
(util:lgi msg)) (util:lgi msg))
;;;; helper / utility funtions ;;;; helper / utility funtions
@ -97,28 +97,27 @@
(dolist (s syns) (dolist (s syns)
(funcall s msg))) (funcall s msg)))
(defun handle-action (msg state syns env &key (default #'no-op)) (defun handle-action (msg state syns &key (default #'no-op))
(let* ((key (shape:head-value msg :action)) (let* ((key (shape:head-value msg :action))
(act (gethash key (actions env) default))) (act (gethash key (actions *environment*) default)))
(funcall act msg state syns env))) (funcall act msg state syns)))
;;;; predefined neuron actions ;;;; predefined neuron actions
(defun no-op (msg state syns env) (defun no-op (msg state syns)
(list msg state syns)) (list msg state syns))
(defun remember (msg state syns env) (defun remember (msg state syns)
;(list msg (make-neuron-state (shape:data msg) syns)) ;(list msg (make-neuron-state (shape:data msg) syns))
(list msg (shape:data msg) syns)) (list msg (shape:data msg) syns))
(defun create-sensor (msg state syns env) (defun create-sensor (msg state syns)
(let* ((key (shape:data msg)) (let* ((key (shape:data msg))
(sensor (make-neuron actor:*self* :state key :env env)) (sensor (make-neuron actor:*self* :state key))
(nmsg (message:create (list :csys :created (car key) (cadr key))))) (nmsg (message:create (list :csys :created (car key) (cadr key)))))
;(setf (gethash key (sensors env)) (list sensor)) (add-sensors key (list sensor))
(add-sensors key (list sensor) env)
(list nmsg state syns))) (list nmsg state syns)))
(defun add (msg state syns env) (defun add (msg state syns)
(list msg (+ (shape:data msg) state) syns)) (list msg (+ (shape:data msg) state) syns))

View file

@ -36,10 +36,10 @@
(config:add-action '(:csys) (constantly nil)) (config:add-action '(:csys) (constantly nil))
) )
(defun eff-proc (msg state syns env) (defun eff-proc (msg state syns)
(let ((t:*test-suite* (test-suite env))) (let ((t:*test-suite* (test-suite csys:*environment*)))
(destructuring-bind (nmsg nst nsyns) (destructuring-bind (nmsg nst nsyns)
(csys:handle-action msg state syns env) (csys:handle-action msg state syns)
(util:lgi nmsg) (util:lgi nmsg)
(actor:send (core:mailbox (tc:receiver t:*test-suite*)) nmsg)))) (actor:send (core:mailbox (tc:receiver t:*test-suite*)) nmsg))))