orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #picolisp
<Nistur>
mornin'
<Regenaxer>
Hi Nistur
<Nistur>
hulloo :)
rob_w has joined #picolisp
orivej has quit [Ping timeout: 256 seconds]
orivej has joined #picolisp
orivej has quit [Ping timeout: 246 seconds]
orivej has joined #picolisp
<rob_w>
hi chan
<aw->
hi
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #picolisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #picolisp
<beneroth>
hi all
<Regenaxer>
Hi rob_w, aw-, beneroth
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #picolisp
orivej has quit [Ping timeout: 240 seconds]
orivej has joined #picolisp
<beneroth>
Regenaxer, is it an implementation detail/accident that (put) can take a 'num or 'lst as second argument (property name) ?
<beneroth>
hihi
orivej has quit [Ping timeout: 258 seconds]
orivej has joined #picolisp
* beneroth
just found out that (trace 'if) is not working so well ^^
<Regenaxer>
yes, trace only for EXPRs
<beneroth>
yeah makes sense
<Regenaxer>
A list as second arg for 'put' is new
<beneroth>
corrupts the stack very efficiently :)
<Regenaxer>
to keep in sync with 'get'
<Regenaxer>
I think it does not directly corrupt the stack
<Regenaxer>
but behaves wrong
<beneroth>
(trace 'if) looks like stack corruption
<Regenaxer>
as trace needs to *evaluate* the arguments
<beneroth>
at least in repl
<beneroth>
anyway, doesn't matter
<Regenaxer>
How does a stack corruption look like?
<Regenaxer>
Normally it segfaults if the stack is corrupt
<beneroth>
T, that is not happening
<Regenaxer>
ok
<Regenaxer>
the stack is not visible anyway
<beneroth>
just entering anything after tracing if in repl ends in chaos
<beneroth>
: (trace 'if)
<beneroth>
:
<beneroth>
: ^ ^` ^` ^` ^`!? (cdr @)
<beneroth>
-> if
<beneroth>
"s" -- List expected
<beneroth>
enter without input works
<beneroth>
any input -> this happens
<Regenaxer>
yes, can give any nonsense
<Regenaxer>
'if' is used by the line editor
<beneroth>
yeah of course
<Regenaxer>
so it is that one that prints garbage
<beneroth>
Reference says, property names should be 'sym for get/put. I observed in pil64 using 'num as a property name works pretty well, actually. and even 'lst works with put, but no chance to use it with get (as other use is intended)
<Regenaxer>
lst only works if the passed list is ==
<beneroth>
ah T
<beneroth>
of course
<beneroth>
so really a stupid idea
<beneroth>
what about 'num being an absolut stupid idea?
<Regenaxer>
In pil32 also numbers are not ==
<beneroth>
ah right
<beneroth>
of course
<Regenaxer>
No, in pil64 it is ok
<beneroth>
pil64 also works only for smaller numbers
<beneroth>
or?
<Regenaxer>
exactly
<beneroth>
(== 64 64) etc..
<beneroth>
grokked it, thanks
<Regenaxer>
So it can be done, but might be confusing
<Regenaxer>
I think for pil21 we can recommend
<beneroth>
yeah not everything that can be done should be done :-)
<Regenaxer>
to use short numbers
<Regenaxer>
T
<Regenaxer>
btw, (put 'sym1|lst ['sym2|cnt ..] '
<Regenaxer>
Which arg did you mean?
<Regenaxer>
the first?
<Regenaxer>
concerning the ref
orivej has quit [Ping timeout: 264 seconds]
orivej_ has joined #picolisp
<beneroth>
sym2
<beneroth>
they property name
<beneroth>
(put This 123 5)
<Regenaxer>
yes
<beneroth>
(put This '(1 2 3) 5)
<beneroth>
works, but stupid :)
<Regenaxer>
yes, seems not checked at runtime
<beneroth>
(get This 123) -> 5
<Regenaxer>
T
<beneroth>
(get This '(1 2 3) -> get sees we want to do list operations... oh.. NIL
<beneroth>
:)
<beneroth>
yeah all fine the way it is
<Regenaxer>
A list is not totally illegal, like a bignum
<beneroth>
T
<Regenaxer>
just makes no sense usually
<beneroth>
T
<beneroth>
and picolisp haves programmer in control
<Regenaxer>
In some pathological case it might make sense
<Regenaxer>
exactly :)
<beneroth>
if programmers want to play stupid games, the programmer may win stupid prices :)
<Regenaxer>
hehe
orivej_ has quit [Ping timeout: 265 seconds]
orivej has joined #picolisp
orivej has quit [Ping timeout: 260 seconds]
orivej has joined #picolisp
<beneroth>
Regenaxer, how expensive is method dispatching? meaning a method calling itself (or another method of the same class)
<beneroth>
class might be an indirect parent
<beneroth>
background: issueing a method call within the method, or having some duplicated code
<Regenaxer>
It is not totally cheap, as it involves a search through the class hierarchy
<Regenaxer>
I think it is low compared to the function call in general
<beneroth>
ok
<Regenaxer>
only if the class hierarchy is extremely deep
<beneroth>
functional call in general? I observed in the !-functions (e.g. new!) you are duplicating the code instead of doing (prog2 (dbSync) (new ...) ...))
<Regenaxer>
hmm, I think this is not for performance reasons
<Regenaxer>
new is expensive anyway on a DB
<beneroth>
just for... transparency? :D
<beneroth>
aye, other things in that are certainly more expensive than the call
<Regenaxer>
new! does (pass new (or
<beneroth>
an idea about preventing class hierarchy searching: putting the implementation not directly into the method body, but into a transient (or namespaced) function, which is called in the method body
<Regenaxer>
so new does not duplicate
<beneroth>
ah right
<beneroth>
maybe I mixed something up
<Regenaxer>
For put it is necessary
<beneroth>
sorry
<Regenaxer>
put> does the has> check
<Regenaxer>
So put!> cannot call it
<Regenaxer>
otherwise the check is repeated
<Regenaxer>
dbSync is done only if really necessary then
<beneroth>
<beneroth> an idea about preventing class hierarchy searching: putting the implementation not directly into the method body, but into a transient (or namespaced) function, which is called in the method body
<beneroth>
Regenaxer, that would save the class hierarchy lookup, right?
<beneroth>
DKordic, wat?
<Regenaxer>
beneroth, you mean to cache it?
rob_w has quit [Quit: Leaving]
<Regenaxer>
If a function is called in the method body, the lookup happened already
<DKordic>
"get", "put", "getl" and "putl" can be implemented with "maps".
<Regenaxer>
almost
libertas has joined #picolisp
<Regenaxer>
for non-boolean properties
<beneroth>
Regenaxer, I mean method calls within the method body, to methods in the same class
<beneroth>
without overwriting intended
<Regenaxer>
yes
<Regenaxer>
you could "compile" them as read macros
<Regenaxer>
using (method)
<Regenaxer>
('`(method 'msg> '+Cls))
<Regenaxer>
('`(method 'msg> '+Cls)) args ...)
<Regenaxer>
(not tested ;)
<beneroth>
ah, this would not result in code duplication, just reusing of the already established pointer to the method body?
<Regenaxer>
yep
<beneroth>
nice, thx
orivej has quit [Ping timeout: 258 seconds]
<beneroth>
Regenaxer, doesn't work, because I like to make recursive calls (with different args), and the method lookup fails of course because the method is not yetstored at the point of lookup
<beneroth>
so I do (de "method" ...) and (dm method () (pass "method"))
<Regenaxer>
This can also use `(method 'msg> '+Cls)
<Regenaxer>
but you could also pass directly
<beneroth>
within msg> body?
<Regenaxer>
hmm
<beneroth>
why not pass directl?
<Regenaxer>
'pass' needs var args
<beneroth>
instead of lookup + pass
<beneroth>
hm..
<beneroth>
right my method is actually an fexpr...
<beneroth>
so ("method" Args) instead of pass :P
<Regenaxer>
ok
<beneroth>
this is an additional environment, no? so if I do run or eval in "method" but I want to evaluate in the method caller environment, the offset needs to be 2, right?
<Regenaxer>
yes, a function call is an env
<Regenaxer>
also for fexprs
<Regenaxer>
Not 'let' etc
<Regenaxer>
Remember that env offsets will be gone in pil21 :)
<Regenaxer>
Still there, but *only* for '@'
<beneroth>
I forgot
<beneroth>
and I don't know how to do without offset
<beneroth>
within fexprs
<beneroth>
whats the alternative?
<beneroth>
or you only always jump one environment higher, was that it?
<Regenaxer>
No, the stack architecture is different
<Regenaxer>
Do you really have a conflict?
<Regenaxer>
You can use transients as before
<beneroth>
I don't see how to do the scheme just described above
<beneroth>
method> being a wrapper for transient "method" func
<beneroth>
both being fexprs
<Regenaxer>
But it is not a problem of envs I think
<beneroth>
evaluation should happen in environment of method caller
<beneroth>
a Prg is passed in
<Regenaxer>
calling an fexpr from a fexpr with the same arg never works
<beneroth>
yes it is not about that
<Regenaxer>
(A B . Prg) ?
<beneroth>
aye
<Regenaxer>
and instead of (run Prg) you do (myFexpr (run Prg))
<Regenaxer>
you cannot (myFexpr Prg)
<Regenaxer>
I'm not sure what exactly you do, but env offsets don't help anyway
<beneroth>
?
<Regenaxer>
So "instead of (run Prg) you do (myFexpr (run Prg))" is fine
<beneroth>
so (myFexpr 'foo 'bar (foo) (bar)) is not possible pil21, needs to be (myFexpr 'foo 'bar (run (foo) (bar)) ??
<Regenaxer>
Same in pil64 etc
<Regenaxer>
(myFexpr 'foo 'bar (foo) (bar)) is good
<Regenaxer>
but you want to pass Prg somewhere
<beneroth>
yes
<beneroth>
without evaluating
<Regenaxer>
Prg is ((foo) (bar))
<Regenaxer>
you cannot pass to another fexpr
<Regenaxer>
in any pil
<Regenaxer>
because a fexpr does not evaluate
<Regenaxer>
so there is no passing
<beneroth>
I don't mean (pass)
<Regenaxer>
me neither
<Regenaxer>
pass the arguments
<Regenaxer>
not 'pass' the args ;)
<beneroth>
I mean (de myFexpr (A B . Prg) (if ...) (unless B (run Prg 2)) (myFexpr A Prg))
<Regenaxer>
yes
<Regenaxer>
can't work
<Regenaxer>
(myFexpr A Prg) does not match (de myFexpr (A B . Prg)
<Regenaxer>
it will receive (Prg)
<beneroth>
a T
<beneroth>
I mean (de myFexpr (A B . Prg) (if ...) (unless B (run Prg 2)) (myFexpr A NIL Prg))
<Regenaxer>
which is not (if ...
<beneroth>
of course
<beneroth>
ah
<beneroth>
I see
<beneroth>
ok
<Regenaxer>
fexprs are useful on top level, kind of
<beneroth>
I send you some code later per mail, then you we can discuss the concrete case
<beneroth>
too big to blow into here
<Regenaxer>
For general use, better define EXPRs and put fexprs as top-level wrapper
<beneroth>
I'm not sure if dropping offset is not reducing the power of fexprs
<beneroth>
but cannot think it through now
<Regenaxer>
not the power
<Regenaxer>
only symbol conflicts
<Regenaxer>
There is no case you cannot fix with transients or namespaces
<Regenaxer>
These offsets are all about symbol bindings
<Regenaxer>
The 'up' function *is* in pil21 btw
orivej has joined #picolisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #picolisp
orivej_ has joined #picolisp
orivej has quit [Ping timeout: 256 seconds]
orivej_ has quit [Ping timeout: 260 seconds]
orivej has joined #picolisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #picolisp
orivej has quit [Ping timeout: 256 seconds]
orivej_ has joined #picolisp
<beneroth>
ah Regenaxer I grokked it now what you meant
<Regenaxer>
:)
orivej has joined #picolisp
orivej_ has quit [Read error: Connection reset by peer]
orivej has quit [Ping timeout: 260 seconds]
orivej has joined #picolisp
orivej has quit [Ping timeout: 256 seconds]
orivej has joined #picolisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #picolisp
orivej has quit [Ping timeout: 240 seconds]
orivej has joined #picolisp
orivej has quit [Ping timeout: 240 seconds]
orivej has joined #picolisp
orivej has quit [Read error: Connection reset by peer]
orivej has joined #picolisp
orivej has quit [Ping timeout: 246 seconds]
orivej has joined #picolisp
orivej_ has joined #picolisp
orivej has quit [Read error: Connection reset by peer]
orivej_ has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #picolisp
Nistur has quit [*.net *.split]
Nistur has joined #picolisp
Blue_flame has quit [Ping timeout: 260 seconds]
orivej has quit [Ping timeout: 264 seconds]
orivej has joined #picolisp
salotz has joined #picolisp
orivej_ has joined #picolisp
orivej has quit [Ping timeout: 240 seconds]
<Regenaxer>
Does anybody understand why Firefox disables <dialog> elements by default?
<Regenaxer>
I want to use it in the new GUI
orivej_ has quit [Ping timeout: 260 seconds]
orivej has joined #picolisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #picolisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #picolisp
ChanServ has quit [shutting down]
Blue_flame has joined #picolisp
miskatonic has joined #picolisp
orivej has quit [Ping timeout: 240 seconds]
ChanServ has joined #picolisp
Blue_flame is now known as Guest83967
orivej has joined #picolisp
orivej has quit [Ping timeout: 246 seconds]
orivej has joined #picolisp
<Regenaxer>
tankf33der: Now I released a new pil21
<Regenaxer>
With copy and append (and a little more)
<tankf33der>
will test
<Regenaxer>
Thanks! No hurry
<miskatonic>
the first lvmm-based pil?
<Regenaxer>
yess :)
<Regenaxer>
Not finished yet, don't expect too much
<miskatonic>
then it might not be finished in time for the next stable debian
<Regenaxer>
Yeah, the plan is 2021 (that's why "pil21")
orivej has quit [Ping timeout: 260 seconds]
casaca has joined #picolisp
casaca has quit [Excess Flood]
orivej has joined #picolisp
<tankf33der>
Regenaxer: all works, all passed.
<Regenaxer>
Great, thx!
<Regenaxer>
Biggest addition is lib/debug.l and lib/lint.l
<Regenaxer>
and *Prompt handling in readline()
<tankf33der>
i would like to get new peek function
<tankf33der>
for bugs: i would like get fixes for cut and need
<Regenaxer>
ok
<Regenaxer>
fixes?
<tankf33der>
details in issue file
<tankf33der>
they arr wrong
<tankf33der>
broken
<Regenaxer>
ok
orivej has quit [Ping timeout: 264 seconds]
orivej has joined #picolisp
casaca has joined #picolisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej_ has joined #picolisp
orivej_ has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #picolisp
orivej has quit [Ping timeout: 240 seconds]
orivej has joined #picolisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #picolisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #picolisp
orivej_ has joined #picolisp
orivej has quit [Ping timeout: 258 seconds]
orivej_ has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #picolisp
orivej_ has joined #picolisp
orivej has quit [Ping timeout: 264 seconds]
beneroth has quit [Remote host closed the connection]
beneroth has joined #picolisp
orivej_ has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #picolisp
miskatonic has quit [Quit: miskatonic]
orivej has quit [Ping timeout: 260 seconds]
orivej has joined #picolisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #picolisp
orivej has quit [Ping timeout: 258 seconds]
orivej has joined #picolisp
orivej has quit [Read error: Connection reset by peer]
orivej_ has joined #picolisp
orivej has joined #picolisp
orivej_ has quit [Read error: Connection reset by peer]
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #picolisp
orivej has quit [Read error: Connection reset by peer]
orivej has joined #picolisp
casaca has quit [Remote host closed the connection]