Compare commits

...

2 commits

5 changed files with 51 additions and 34 deletions

View file

@ -1,15 +1,15 @@
;;;; decons/csys - cybernetic communication systems
;;;; decons/asys - asynchronous actor systems
(defpackage :decons/csys
(defpackage :decons/asys
(:use :common-lisp)
(:local-nicknames (:actor :scopes/core/actor)
(:util :scopes/util))
(:export #:neuron #:synapse
#:forward
#:forward #:cumulate
#:set-content
#:inhibit))
(in-package :decons/csys)
(in-package :decons/asys)
(defun neuron (proc &key state syns env)
(actor:create
@ -22,9 +22,17 @@
;;;; simple default / example neuron processors
(defun forward (msg state syns env)
(format t "*** forward ~a ~a~%" msg state)
(dolist (s syns)
(funcall s msg)))
(defun cumulate (msg state syns env)
(setf state (+ state msg))
(if (/= 0 state)
(forward state state syns env))
(actor:become
(lambda (msg) (cumulate msg state syns env))))
;;;; publish/subscribe - pubsub service
;;;; helpers for operations on complex messages (with content and customer slots)

View file

@ -5,10 +5,10 @@
:license "MIT"
:version "0.0.1"
:homepage "https://www.cyberconcepts.org"
:description "Deconstruction as a method for implementing machine intelligence."
:description "Deconstruction as a method for implementing machine un-intelligence."
:depends-on (:alexandria
:scopes-core :scopes/test)
:components ((:file "csys" :depends-on ("mlx"))
:components ((:file "asys" :depends-on ("mlx"))
(:file "mlx" :depends-on ("recurse"))
(:file "recurse")
(:file "xplore"))
@ -18,6 +18,6 @@
(defsystem :decons/test
:depends-on (:decons)
:components ((:file "test-decons")
(:file "test-csys" :depends-on ("test-decons")))
(:file "test-asys" :depends-on ("test-decons")))
:perform (test-op (o c)
(symbol-call :decons/test-decons :run)))

33
test-asys.lisp Normal file
View file

@ -0,0 +1,33 @@
;;;; decons/test-asys - tests for the asys (asynchronous actor systems) package
(in-package :decons/test-decons)
(defun probe (msg state syns env)
(let ((t:*test-suite* env))
(== (actor:content msg) (pop state))
(lambda (msg) (probe msg state syns env))
))
(defun test-asys ()
(async:init)
(test-neuron-basics)
(async:finish))
(deftest test-neuron-basics ()
(let* ((prb (asys:neuron #'probe :env t:*test-suite* :state '(43 44 9 13)))
;(syn (asys:synapse prb (asys:set-content #'1+)))
(syn1 (asys:synapse prb #'1+))
;(syn (asys:synapse prb (asys:inhibit)))
(fw (asys:neuron #'asys:forward :syns (list syn1)))
(syn2 (asys:synapse fw #'1+))
(cum (asys:neuron #'asys:cumulate :state 0 :syns (list syn2))))
(actor:send fw 42)
(actor:send fw 43)
(actor:send cum 7)
(actor:send cum 4)
(sleep 0.1)
(actor:stop prb)
(actor:stop fw)
(actor:stop cum)
(sleep 0.1)
))

View file

@ -1,25 +0,0 @@
;;;; decons/test-csys - tests for the csys (cybernetic ommunication systems) package
(in-package :decons/test-decons)
(defun probe (msg state syns env)
(let ((t:*test-suite* env))
(== (actor:content msg) (pop state))
(lambda (msg) (probe msg state syns env))
))
(defun test-csys ()
(test-neuron-basics))
(deftest test-neuron-basics ()
(let* ((prb (csys:neuron #'probe :env t:*test-suite* :state '(43 44)))
;(syn (csys:synapse prb (csys:set-content #'1+)))
(syn (csys:synapse prb #'1+))
;(syn (csys:synapse prb (csys:inhibit)))
(fw (csys:neuron #'csys:forward :syns (list syn))))
(actor:send fw 42)
(actor:send fw 43)
(sleep 0.1)
(actor:stop prb)
(actor:stop fw)
))

View file

@ -3,7 +3,8 @@
(defpackage :decons/test-decons
(:use :common-lisp)
(:local-nicknames (:actor :scopes/core/actor)
(:csys :decons/csys)
(:async :scopes/util/async)
(:asys :decons/asys)
(:mlx :decons/mlx)
(:r :decons/recurse)
(:xplore :decons/xplore)
@ -19,7 +20,7 @@
(test-recursive)
(test-line)
(test-quad)
(test-csys)
(test-asys)
(t:show-result)))
(deftest test-xplore ()