rob_w has quit [Read error: Connection reset by peer]
karswell_ has joined #picolisp
f8l has quit [Ping timeout: 248 seconds]
f8l has joined #picolisp
orivej has joined #picolisp
Regenaxer has joined #picolisp
alexshendi has quit [Ping timeout: 260 seconds]
rob_w has joined #picolisp
aw- has joined #picolisp
<aw->
hi all
<Regenaxer>
Hi aw-
<aw->
the wording for (for) is so confusing
<aw->
as well as the wording for (loop)
<aw->
ex: in (loop): "if the result is NIL or non-NIL, respectively"
<aw->
respectively to what? i don't understand
Regenaxer has left #picolisp [#picolisp]
Regenaxer has joined #picolisp
<Regenaxer>
oops
<Regenaxer>
hihi, yes
orivej has quit [Ping timeout: 260 seconds]
<aw->
Regenaxer: in (loop): "the clause's second element is evaluated as a condition"
<Regenaxer>
"has NIL or T"
<aw->
is that 'any ?
<aw->
"'any is evaluated as a condition" ?
<Regenaxer>
this is where "respectively" refers to
<Regenaxer>
yes, (NIL 'any . prg)
<aw->
ahhh
<Regenaxer>
very terse indeed
<aw->
I tried to rephrase so it makes more sense, but it's a bit long: Endless loop with multiple conditional exits: The body is executed an unlimited number of times. If a clause has NIL as its CAR, 'any is evaluated as a condition, and if the result is NIL, 'prg is executed and the result returned. If a clause has T as its CAR, 'any is evaluated as a condition, and if the result is non-NIL, 'prg is executed and the result returned.
<Regenaxer>
yeah, contains the same info
<Regenaxer>
But then we would need to rewrite many such places
<aw->
hmmm yeah
<aw->
anyways I have another question
<Regenaxer>
ok
<aw->
i'm trying to loop infinitely, but return the result only when the result is non-NIL
<Regenaxer>
return from an infinite loop?
<Regenaxer>
a contradiction? ;)
<aw->
well
<aw->
"infinite"
<Regenaxer>
indefinite ;)
<aw->
as long as the result is NIL, it should loop
<Regenaxer>
So 'until' is the best
<aw->
i tried that but it doesn't work
<Regenaxer>
'@' has the result then
<aw->
(until (prg) @)
<Regenaxer>
(until (foo) ...) @
<Regenaxer>
or (loop ... (T (foo) @) ...)
<aw->
oh the @ is outside of (until) !
<Regenaxer>
yes
<Regenaxer>
The '@' rules
<Regenaxer>
'@' is set only for non-NIL results
<aw->
ahhhh I was using it in (until) but it would never execute
<Regenaxer>
very convenient!
<Regenaxer>
yeah
<aw->
awesome! thanks
<aw->
i was close ;)
<Regenaxer>
As long as (foo) retursn NIL in (until (foo), '@' is not set
<Regenaxer>
When it is set, until exits
<Regenaxer>
So that explains your observation
<aw->
right
<aw->
thank you!
<Regenaxer>
:)
<aw->
i'm working on something now, but i'm hoping next month I can have time to work on the picolisp docs
<Regenaxer>
great!
<Regenaxer>
I book would be nice
<Regenaxer>
with more explanations
<Regenaxer>
the ref is terse, but that's ok I think
<aw->
isn't there a book already?
<Regenaxer>
not really
<Regenaxer>
only collections of examples
<Regenaxer>
The tutorial is too little, and perhaps also outdated
<Regenaxer>
s/little/short
<aw->
i think it's quite useful
<aw->
i often use it for reference
<Regenaxer>
ok, haven't looked at if for decades perhaps :)
<aw->
actually, one thing would be useful is the full collection of picolisp rosetta code solutions. I don't know if those exist in a single location