<abu[m]>
Yeah, 'doc' defaults to w3m. But you can set the BROWSER env
<abu[m]>
'qsym' is quite esotheric. Used in interprocess communication
<abu[m]>
just a convenience function to minimize traffic
<cpli>
are there other instances where functions are called in the form of dotted lists to great effect?
<cpli>
quote is genuinely kind of elegant
<abu[m]>
I think there are only a few ones
<abu[m]>
I mean expecting atomic args
<cpli>
though atomic args
<abu[m]>
Functions with a 'lst' or 'prg' are common
<abu[m]>
ie. FEXPRs
<abu[m]>
(if 'any1 any2 . prg)
<cpli>
why does local return a lambda which takes a list of symbols?
<abu[m]>
(local) (privat) etc. are a bit surprising at first :)
<abu[m]>
The take no args, but *read* from the input stream
<abu[m]>
(local) foo
<abu[m]>
So local does not return anything useful
<abu[m]>
It is just for the side effect of putting those symbols into the current namespace
<cpli>
(in-package #:foo) but instead it's a reader macro which reads the next symbol or list as argument to `export`?
<abu[m]>
I would not call it a reader-macro. It is a normal (read), just with the current namespace isolated from the search order
<cpli>
hmm
<abu[m]>
It is the normal read mechanism (as in all Lisps): Search for a symbol, and if not found intern a new one
<abu[m]>
So if the search order is isolated to the current namespace *only*, the symbol(s) will be interned even if existing somewhere else
<cpli>
is pil's pilouge implemented via something like amb/call-cc?
<abu[m]>
I forgot what AMB or call-cc are. Can you elaborate?
<cpli>
scheme basically turns everything into continuation passing style and you gain this nifty function call/cc or call-with-current-continuation
<cpli>
amb is this strange "ambivalence" function wherein it tries calling a function/continuation repeatedly until it either succeeds or runs out of possible arguments
<abu[m]>
I don't know Scheme well, but I think Pil's coroutines are similar
<abu[m]>
can be used to write a generator for example
<cpli>
scheme has lazy iterators that are usually implemented using the same machinery
<cpli>
i believe
<cpli>
buffet?
<buffet>
chi?
<cpli>
(just want them to check over my random stateme-
<cpli>
buffet: call/cc -> streams/lazy iterators
<cpli>
?
<buffet>
yup
<buffet>
for example
<cpli>
also is scheme strictly cps?
<abu[m]>
cpli: Your questien above, Pilog does not use it
<cpli>
q-q
<abu[m]>
it does it "manually" using assoc lists
<buffet>
wdym by strictly?
<cpli>
i.e. is everything transformed into cps
<cpli>
and how does that impact performance?
<cpli>
abu[m]: makes sense
<buffet>
implementation detail, not even sure every scheme does that (guile?)
<cpli>
how can you implement call/cc without it being a huge hack without cps?
<buffet>
performance should be fine, the main difference is that you have another call rather than return
<buffet>
well, guile just copies your stack, ie huge hack
<cpli>
**exactly**
<abu[m]>
Hi buffet btw :) Welcome here!
<buffet>
hey
<cpli>
buffet, be nice :>
<buffet>
no >:(
<cpli>
huh?! D:<
<abu[m]>
hihi
<cpli>
buffet, do you get the cons oughtn't cons its arg paper?
abu[7] has joined #picolisp
<cpli>
and also what's your opinion on quote quoting its args properly
<cpli>
instead of its first argument?
<cpli>
abu[7]: what's 7?
<buffet>
(succ 6)
<abu[7]>
My company's name
<cpli>
sieben
<abu[7]>
I switched client to normal IRC
<abu[7]>
yes, 7fach GmbH
<cpli>
warte, also immer nur deutsche in cs online?
<buffet>
cpli: i get the jist, i feel like i'd like to see an implementation (esp wrt to "just do cps lambdas" there is a bit of context missing)
<abu[7]>
Too many deutsche? ...
<buffet>
germans taking over this irc, auf geht's!
<abu[7]>
good
<cpli>
buffet: 1. do you get cons mustn't cons (check) 2. quote quotes argument list instead of its first argument
<cpli>
abu[7]: do you use picolisp at work?
<abu[7]>
yes
<cpli>
oh damn
<abu[7]>
for all projects
<buffet>
2. i still feel like it doesn't matter, but maybe one is more elegant in some cases
<beneroth>
hi abu[m], buffet, cpli - nice discussion :)
<abu[m]>
Grüezi beneroth :)
seninha has joined #picolisp
rob_w has joined #picolisp
seninha has quit [Remote host closed the connection]
seninha has joined #picolisp
seninha_ has joined #picolisp
seninha has quit [Remote host closed the connection]
seninha_ has quit [Remote host closed the connection]
seninha_ has joined #picolisp
seninha_ has quit [Quit: Leaving]
seninha has joined #picolisp
seninha has quit [Quit: Leaving]
pfd has joined #picolisp
zaWanderer has joined #picolisp
<zaWanderer>
Greetings :)
<zaWanderer>
I have a question regarding +Chart gui class.
<abu[m]>
Hi zaWanderer!
<abu[m]>
How can we help?
<zaWanderer>
I see in the code that Get function is the method to actualize a 1-D list (values in the GUI now) to the 1-D list (previous values that was in the GUI)
<zaWanderer>
Is that correct? (it took me a day, I hope so :D)
<zaWanderer>
Is there a good trick or method to debug or trace and understand these changes?
<abu[m]>
Yes, correct, though it must not be a 1-D list. Can be anything
<abu[m]>
You can (trace 'get> '+Chart)
<abu[m]>
or set a breakpoint
<zaWanderer>
will this cause any timeout issues for the sessions?
<abu[m]>
No problem
<abu[m]>
Sorry, must go for 30 mins or so
<abu[m]>
bbl
<zaWanderer>
sure
<beneroth>
hi zaWanderer :)
<zaWanderer>
hi beneroth
<beneroth>
zaWanderer, (trace) just prints all function calls (with arguments and return value).
<beneroth>
so that should not use much more time and certainly not trigger timeouts
<beneroth>
breakpoints are for interactively debug in the repl.
<zaWanderer>
Thanks I am trying it now
<zaWanderer>
I think it is working. I need to read on tracde and debug now
<zaWanderer>
I started the app from pil command line
<zaWanderer>
so I had to pack the server call in a function, so I can add the trace call in the repl
<zaWanderer>
Is that how you should do it?
<zaWanderer>
Also a side question, affecting my quality of life in learning web-apps with picolisp
<zaWanderer>
very often the server terminal stops responding to my keystrokes, and I always have to manually break with CTRL+C if I am lucky, reset the terminal and try again
<zaWanderer>
I tried on Linux VMs, WSL, all same weird behavior
<abu[m]>
Normally, you just need ^D to exit the REPL session and then ^C to terminate the parent process
<abu[m]>
But problems arise if you connect the browser twice
<zaWanderer>
It's not about stopping, It's when I try to print some values like *Top, etc.. But I can't type properly, the terminal won't take all the characters, or sometimes just won't display what I type but executes correctly
<abu[m]>
This gives *two* sesions on the same terminal, and you need several ^D
<abu[m]>
This is also a symptom
<zaWanderer>
oh, I see
<abu[m]>
2 REPLs
<abu[m]>
so it is not clear which one gets which key
<zaWanderer>
Is there a good practice to prevent this from happening?
<abu[m]>
I think after some usage the problem disappears. Just ^D before connecting the browser again
<zaWanderer>
but why the terminal stay unresponsive even after quitting pil?
<abu[m]>
The terminal is reset usuall when pil exits. But sometimes the second session messes up the clean up of the first one
<abu[m]>
You do "stty sane" in such cases?
<abu[m]>
I have an alias:
<abu[m]>
alias s='stty sane'
<abu[m]>
So I can type "s" blindly (as there is no echo)
<zaWanderer>
I am not that good with Linux, but I admit my Linux knowledge has improved a lot one I started learning Lisp :D
<abu[m]>
Very good :)
<zaWanderer>
I use just the reset command, or reset -c , then most of the times the termianl recovers
<abu[m]>
Ok
<abu[m]>
reset is a bit violent ;) It does more than stty it seems
<abu[m]>
For the above terminal mode issues, "stty sane" is enough
<zaWanderer>
I will try it moving forward.
<zaWanderer>
One more question, regarding E/R representation
<abu[m]>
👍
<zaWanderer>
I saw that there are some E/R text drawing in the demo app
<zaWanderer>
is that done by hand, or there's a function/program for that?
<zaWanderer>
Plotting the ER model I meant
<abu[m]>
This was done by hand. But there is @lib/vip/draw.l which does similar things
<abu[m]>
It is for creating box notations from s-expressions
<abu[m]>
The E/R drawings are more difficult to automate