ChanServ changed the topic of #picolisp to: PicoLisp language | Channel Log: https://irclog.whitequark.org/picolisp/ | Check also http://www.picolisp.com for more information
razzy has joined #picolisp
orivej has joined #picolisp
razzy has quit [Quit: Connection closed]
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
<DKordic> Re: "maps". W:Identity_of_indiscernibles#Indiscernibility_of_identicals .
<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]
orivej has quit [Ping timeout: 246 seconds]
orivej has joined #picolisp
orivej_ has joined #picolisp
orivej has quit [Ping timeout: 256 seconds]
orivej_ has quit [Ping timeout: 264 seconds]
orivej has joined #picolisp
orivej has quit [Ping timeout: 246 seconds]
orivej has joined #picolisp