beneroth changed the topic of #picolisp to: PicoLisp language | The scalpel of software development | Channel Log: https://libera.irclog.whitequark.org/picolisp | Check www.picolisp.com for more information
aw- has joined #picolisp
aw- has quit [Quit: Leaving.]
aw- has joined #picolisp
<tankf33der> morning
<tankf33der> forth-OK
<tankf33der> fern-OK
<tankf33der> net-OK
<tankf33der> make: *** [Makefile:2: all] Segmentation fault (core dumped)
<tankf33der> pilog crashing.
<tankf33der> Regenaxer: this code:
<tankf33der> afk.
<Regenaxer> Thanks tankf33der! I take a look
rob_w has joined #picolisp
aw- has quit [Quit: Leaving.]
aw- has joined #picolisp
rob_w has quit [Ping timeout: 240 seconds]
rob_w has joined #picolisp
rob_w has quit [Remote host closed the connection]
clacke has quit [Ping timeout: 255 seconds]
<Regenaxer> tankf33der: I found the bug crashing your test
<Regenaxer> Seems to work now, but the new Pilog syntax is not ready yet
<beneroth> hi Regenaxer :)
<beneroth> pil21 bug? or more fundamental?
<Regenaxer> Hi beneroth! Yes, pil21
<Regenaxer> It supports an nice new syntax for Lisp expressions in Pilog
<Regenaxer> (I announced and showed it in PilCon)
<Regenaxer> I was annoyed by the need of '->' all the time
<Regenaxer> So I rewrote parts of Pilog
<beneroth> ah
<Regenaxer> AND did it wrong ;)
<beneroth> hehe
<Regenaxer> But now fixed
<Regenaxer> The new syntax has still problems
<beneroth> I remember you mentioning it here once, but I missed that PilCon, and forgot about that
<Regenaxer> But the old should work
<beneroth> ok
<beneroth> :)
<beneroth> good we have tankf33der <3
<Regenaxer> yeah!!! Indeed
<Regenaxer> It was a gc bug again, so it shows up only in heavy tests
<Regenaxer> The new syntax is: Instead of
<Regenaxer> (^ @N (* (-> @A) (-> @B)))
<Regenaxer> you just write
<Regenaxer> (^ @N (* @A @B))
<Regenaxer> I think I never announced it here, cause I wrote it on Tuesday, tHe PilCon day
<tankf33der> All passed now.
<Regenaxer> Great, thanks tankf33der!!
<beneroth> I thank you both!
<Regenaxer> :)
<beneroth> Regenaxer, so within (^ ) expression, all pilog-variables are automatically bound to picolisp variables?
<Regenaxer> Absolutely correct
<beneroth> makes sense.
<Regenaxer> yes, and looks much nicer
<beneroth> but gives some additional cost, no? or only on evaluation of variable?
<Regenaxer> I think it is a little faster
<Regenaxer> The expensive part is the lookup of the values in the Pilog envs
<Regenaxer> Was done by (-> @A)
<beneroth> I'm thinking about situations where there many pilog variables in existence, but only very few used in the picolisp expression
<Regenaxer> Ah, no, it binds only the relevant ones
<beneroth> I see. nice.
<Regenaxer> @A and @B in the above case
<beneroth> so just automation of previous mechanic. and probably faster because less explicit code?
<beneroth> (less space in the AST)
<Regenaxer> yes, no (let A (-> @A) needed
<beneroth> nice
<Regenaxer> The expensive part is the lookup
<Regenaxer> Anyway, it is not complete yet
<Regenaxer> does not work right if (or ((...))) is involved
<Regenaxer> But I found out that 'or' was not really correct anyway, because the values *are* already replaced by the unification process
<Regenaxer> For example:
<Regenaxer> (? @A 3 (or ((^ NIL (msg (cons '@A @A))))))
<Regenaxer> (3 . 3)
<Regenaxer> Expected (@A . 3) right?
<Regenaxer> Or this:
<Regenaxer> : (? @A 3 (or ((^ NIL (msg '(-> @A))))))
<Regenaxer> (-> 3)
<Regenaxer> -> NIL
<Regenaxer> So not really what is expected
<Regenaxer> '->' gets already the 3
<Regenaxer> It worked because '->' takes any arg
<Regenaxer> But not really clean
<Regenaxer> So also the old system with old syntax had its problems
<beneroth> I see
aw- has quit [Quit: Leaving.]