freenode/#clasp - IRC Chatlog
Search
21:47:47
scymtym
but there is NODE* in there which expands to MAKE+FINISH-NODE+RELATIONS which calls MAKE-NODE, REDUCE with RELATE and finally FINISH-NODE
21:49:22
drmeister
Where does the reduce get introduced? In make+finish-node+relations? Looking for it...
21:50:19
scymtym
https://github.com/scymtym/architecture.builder-protocol/blob/master/src/protocol.lisp#L227
21:54:03
scymtym
ADD-RELATIONS has all the good stuff, local functions, tail calls, local functions as arguments
21:59:15
scymtym
ACTION sees https://github.com/scymtym/architecture.builder-protocol/blob/master/src/protocol.lisp#L149 . starts sweating
22:03:00
scymtym
the hairy code above shouldn't get involved very much since RELATE is called without additional keyword arguments
22:12:27
drmeister
So in the non working version the REDUCE is not being called with the correct argument.
22:13:18
drmeister
The NIL argument in the second line should be the sequence in (* :element (#<ATOM-TEST :id> #<BOND-TO-ATOM-TEST :id>))
22:31:06
drmeister
I haven't worked with REDUCE much - but we might be able to build a reproducer with this.
22:34:51
drmeister
(ARCHITECTURE.BUILDER-PROTOCOL:ADD-RELATIONS :CANDO (cons NIL nil) '((* :ELEMENT (:foo :bar))))
22:41:09
kpoeck
drmeister all your examples work fine in my icando-boehm using bir (code from yesterday)
22:49:30
drmeister
(ARCHITECTURE.BUILDER-PROTOCOL:ADD-RELATIONS :CANDO (cons NIL nil) `((* :ELEMENT (,(core:make-cxx-object 'chem:atom-test :sym :C :test :sapelement) ,(chem:make-bond-to-atom-test :sabany-bond nil)))))
0:45:57
karlosz
probably the set implementation is responsible. if we transparently swap that out for a list we should be able to control for it
1:57:07
drmeister
./icando-boehm -f nosmarts disables all compilation of smarts code during startup.
1:57:31
drmeister
Then you can initialize some smarts using (chem:initialize-smarts-users) and I get ...
3:53:50
drmeister
::notify Bike I can reproduce the problem pretty well now - but it's not convenient. I created the "nosmarts" cando branch (cando - not clasp) and you build the quicklisp code using ./icando-boehm -f nosmarts
3:54:26
drmeister
::notify Bike To reproduce the problem use: ./build/boehm/icando-boehm -e '(trace ARCHITECTURE.BUILDER-PROTOCOL:ADD-RELATIONS)' -e '(trace reduce)' -e '(chem:initialize-smarts-users)' -e "(core:quit)"
3:55:31
drmeister
::notify Bike You can build this with the master branch of clasp and you can compare the output. There are calls to REDUCE that are getting NIL instead of the correct argument.