Suscribe
I was trying out the diff function and I noticed something:
: (diff '(1 2 3 4) '(3 4))
-> (1 2)
but
: (diff '(3 4) '(1 2 3 4))
-> NIL
I think this means that there is an order to the arguments of diff, where
the second argument must be the shortest.
I wanted to ask if this was correct, and als
Thanks Alex.
So, a better description of diff might be "Returns all the elements in the
first argument that are not in the second argument"?
On Sun, Nov 27, 2016 at 2:45 AM, Alexander Burger
wrote:
> On Sat, Nov 26, 2016 at 09:05:44PM -0500, Bruno Franco wrote:
> > I was
Wao, the next release?! Thank you! I'm really glad my question could help
that much. I'm looking forward to it!
On Tue, Nov 29, 2016 at 1:18 AM, Alexander Burger
wrote:
> On Mon, Nov 28, 2016 at 01:35:30PM -0500, Bruno Franco wrote:
> > So, a better description of diff might
I just wanted to point out that (doc 'need) for version 15.11.0 seems to
miss something.
It defines the possible arguments of need as:
(need 'cnt ['lst ['any]])
But it doesn't say what the function does with 'any, or how it affects the
result.
I also wanted to ask if this kind of topic was appro
Thanks Chri! I'm relieved to hear you say that. I'll make sure to send any
question I have.
On Sat, Dec 3, 2016 at 5:12 PM, Christophe Gragnic <
christophegrag...@gmail.com> wrote:
> On Sat, Dec 3, 2016 at 10:54 PM, Bruno Franco
> wrote:
> > I just wanted to po
ence the documentation is
> rather
> > terse and changes happen not that often.
> >
> > Also (doc 'need) does state what it does do. Read the last two lines
> `second
> > form`. It is very unclear and i hope Regenaxer takes a look and clarifies
> > it.
> &
I'm trying to copy a list A in a way that changing the lists inside A don't
affect B.
I've tried using 'copy, like this:
: (setq A '((1 2 3) (4 5 6)))
-> ((1 2 3) (4 5 6))
: (setq B (copy A))
-> ((1 2 3) (4 5 6))
And it works at the top level:
#changing B doesn't change A
: (set B 1)
-> 1
: B
->
I've written something that redefines T to NIL, which surprises me
because I thought that T was protected from redefinition like that, and
I have not found a command in the code that looks like it is redefining T.
Could you check it out and see if its something in the code, or a bug in
the languag
Thanks Alex, That was just what I needed.
I ended up using the (mapcar copy List) code in some disturbingly
inefficient code. I still
don't know enough to turn it into something that doesn't need it, but my
hope is that
as I work on it I'll find it.
On Wed, Dec 7, 2016 at 4:05 PM, Danilo Kordic
w
My my, I see it! Thanks Alex.
On Thu, Dec 8, 2016 at 1:50 AM, Alexander Burger
wrote:
> Hi Bruno,
>
> > I've written something that redefines T to NIL, which surprises me
> > because I thought that T was protected from redefinition like that, and
> > I have not found a command in the code that l
Hey Dean,
I think that, in general, you want to quote a sym argument to a function
when
you want to change the value of that symbol. For example:
: (setq A 1) # Set the value of A to 1
-> 1
: (inc A) # Evaluate A, *then* pass the result to inc
-> 2
: A
-> 1
: (inc 'A) # P
u have T as
> Parameter in a function.
>
> 2016-12-09 5:51 GMT+01:00 Bruno Franco :
>
>> My my, I see it! Thanks Alex.
>>
>> On Thu, Dec 8, 2016 at 1:50 AM, Alexander Burger
>> wrote:
>>
>>> Hi Bruno,
>>>
>>> > I've writ
@Alex
I'm surprised that (pick '((A B) (and (= A Value) B)) ListA ListB) is
faster than (get ListB (index Value ListA)).
It's true that get traverses ListB right after a traversal of ListA, but
pick seems to do the same traversal of
the same number of elements. The only difference is that pick trav
Hi list, I have a problem.
Whenever I sort a list stored in a symbol, some elements are erased
from the original list. Look:
: (setq A (3 2 5 4 1 1 1 1 0 1 2 4 5 ))
-> (3 2 5 4 1 1 1 1 0 1 2 4 5)
: (sort A)
-> (0 1 1 1 1 1 2 2 3 4 4 5 5)
: A
-> (3 4 4 5 5)
The pattern that I've noticed is that a
Hi John, Alex,
Thank you for your explanations, I think I now understand how sort works:
So, for example, in
: (setq A (3 1 2 4 5 6))
-> (3 1 2 4 5 6)
: (setq B (sort A))
-> (1 2 3 4 5 6)
: A
-> (3 4 5 6)
: B
-> (1 2 3 4 5 6)
The symbol A points to the first cell of the list (3 1 2 3 4 5 6), and
6 03:53 schrieb "John Duncan" :
>
>> If they become unreachable, they will be collected.
>>
>> On Fri, Dec 16, 2016 at 1:28 PM, Bruno Franco <
>> brunofrancosala...@gmail.com> wrote:
>>
>>> Hi John, Alex,
>>>
>>> Thank
I know that they're used to bind a variable to a value, and that they do
behave differently, but I don't understand the principle behind their
difference, and I can't predict how they will behave differently from each
other.
>From this little piece:
: (set B 1)
!? (set B 1)
NIL -- Protected symbol
Thank you so much Erik! I especially like that you said WHY setq is named
like that. Its been bugging me for weeks!
On Mon, Dec 26, 2016 at 10:25 PM, Erik Gustafson wrote:
> Hahaha I read your post quickly and then wrote a possibly overkill answer.
>
> I deduce that setq doesn't evaluate its fir
This might be a nice thing to add to the documentation too, since the
function definitions don't mention it. Maybe something like: "Its only
difference with set is that setq does not evaluate its first argument"
On Mon, Dec 26, 2016 at 11:26 PM, Bruno Franco wrote:
> Thank y
>The same meaning of "eq" (or "quick") have functions like 'delete' /
'delq',
>'assoc' / 'asoq', 'case' / 'casq' or 'push1' / 'push1q'.
Thank you Alex, that was exactly my next question.
On Tue, Dec 27, 2016 at 9:20 AM, Erik Gustafson
wrote:
> It is the *function* call overhead, which is relati
Thanks Alex.
I didn't know about picolisp's tolerance for nested symbols. Is there a
reason you chose this?
Like, it lets you write some cool code, or it makes the language more
robust?
On Tue, Dec 27, 2016 at 10:15 AM, Alexander Burger
wrote:
> Hi all,
>
> while talking about 'set' and 'setq',
This is a tangent on your conversation, but...
Alex, that graph looks so cool. Did you do it by hand or did you use some
juicy picolisp program that I can get my hands on?
On Wed, Dec 28, 2016 at 5:45 AM, Alexander Burger
wrote:
> On Wed, Dec 28, 2016 at 10:26:22AM +0100, Alexander Burger wrote:
Hi Alex.
A picolisp clone of VI? That sounds awesome! Please do write the article
for the wiki.
Also, where do I find the source code?
On Thu, Dec 29, 2016 at 2:31 AM, Alexander Burger
wrote:
> On Wed, Dec 28, 2016 at 07:47:13PM -0500, Bruno Franco wrote:
> > This is a tangen
m of the general function.
On Wed, Dec 28, 2016 at 4:35 PM, Bruno Franco
wrote:
> >The same meaning of "eq" (or "quick") have functions like 'delete' /
> 'delq',
> >'assoc' / 'asoq', 'case' / 'casq' or '
I was fooling around when I noticed this:
: (quote quote quote quote quote quote quote)
-> ''NIL
: (quote quote quote quote quote quote 'quote)
-> '('quote)
: (quote quote quote quote 'quote quote 'quote)
-> '''('quote quote 'quote)
: (quote 'quote quote quote quote quote 'quote)
-> ('q
I don't really know any asm, but since the asm code for the picolisp
functions is just a (vi 'function) away, I feel tempted to try.
I've found some advice on learning asm in general, but is there
anything unique of the one used in the picolisp virtual machine
that I should know of?
code) becomes invalid.
>
> You misunderstood the question.
>
> > > On Sat, Dec 31, 2016 at 12:28:06AM -0500, Bruno Franco wrote:
> > > > I don't really know any asm, but since the asm code for the picolisp
> > > > functions is just a (vi 'func
ok, so " ' " is a read macro which expands to a list with the symbol quote
as car. I still don't understand how it gets translated into a different
printed result, but that is probably because, as you said, I just have not
drawn enough memory cell diagrams. I'll keep practising until I get it.
Than
Downloaded and Installed! Thanks Alex!
On Mon, Jan 2, 2017 at 2:29 AM, Alexander Burger
wrote:
> Hi all,
>
> here is an article about Vip, the Vi-Style Editor in PicoLisp:
>
>http://picolisp.com/wiki/?vip
>
> It consists of only 990 lines of code.
>
> Not that the world needs yet another edi
I think you're right on what's the problem. Chopping the varstring creates
a list of characters,
("C" "I" "T" "Y"), and the final list would look like '(@A ("C" "I" "T"
"Y") @B), which does
not match '(@A "C" "I" "T" "Y" @B) above.
If you want
(match '(@A (chop varstring) @B) description)
to match
As for ubuntu, maybe you could make a Personal Package Archive (PPA). Its
lets you make your own packages that can be downloaded by users using
apt-get. Its as easy as downloading the normal packages, but the user must
manually add the repository.
Here's a useful link:
http://askubuntu.com/questio
I think that what Christopher means is that adding a licence makes the
developer's wishes clear. When you put a permissible licence its obvious
you don't care what people do with the code, but if there's no licence at
all it *could* mean you don't care, or it *could* mean you do care but just
forgo
Joh-Tob's question got me curious about parallel code in picolisp. I've
studied the example of 'later' in the documentation and I have an idea of
how it works, but I don't understand how 'wait' works inside of it.
I understand *what* it does, it makes sure that the child processes finish
before ret
I see, 'later' itself sets up *Run.
Thanks Alex
On Wed, Mar 15, 2017 at 1:21 AM, Alexander Burger
wrote:
> Hi Bruno,
>
> > Joh-Tob's question got me curious about parallel code in picolisp. I've
> > studied the example of 'later' in the documentation and I have an idea of
> > how it works, but I
I want to write a simple script that would accept names from the command
line and print then, like this:
$ ./script alice bob
Hello alice and bob
I know that once picolisp has the names I would just use 'print', but how
do I pass the names?
Got it. Thanks!
On Tue, Mar 21, 2017 at 1:56 PM, Alexander Burger
wrote:
> On Tue, Mar 21, 2017 at 10:35:34AM -0700, Lindsay John Lawrence wrote:
> > http://software-lab.de/doc/refA.html#argv
>
> Or use 'opt'
>
> (while (opt)
>(println @) )
> (bye)
> --
> UNSUBSCRIBE: mailto:picolisp@softwar
I can find the documentation for the default functions, and for the form
functions, but how about libraries like pilog.l or http.l?
Hi list,
I'm going through the picolisp application development tutorial (
http://software-lab.de/doc/app.html#tags) and I'm trying this piece of code
at the tags section:
: ( 'main
( NIL "Head")
( NIL
( "Line 1")
"Line"
()
(+ 1 1) ) )
Head
Line 1
Line 2
the proble
Ah, I see! So, its for convenience that the atoms are printed. And the
reason `(+ 1 1) was printed was that it was first evaluated to 2, *then*
passed to , who only ever saw the atom 2.
Thanks Alex.
On Wed, Apr 5, 2017 at 1:36 AM, Alexander Burger
wrote:
> Hi Bruno,
>
> > I'm going through the p
n as in an explanation of every code
> block in that file but this is probably helpful:
> https://software-lab.de/doc/select.html
>
>
>
> On Sun, Apr 2, 2017 at 7:16 AM, Joh-Tob Schäg wrote:
>
>> Yes you can not find any documentation.
>>
>> 2017-04-02 3:36 GMT
Hi list,
I just downloaded the latest version of vip (06may17), but when I try to
run it, it returns an error and enters the picolisp cli:
~> vip
[/home/bruno/bin/vip:5] !? (*CmdWin *Flat *Chr *Complete *Repeat *Change
*Count *Cnt *Search *Clip)
*CmdWin -- Undefined
? ⏎
Looking at the source, thi
Yes! Its working. Thanks Alex. I hadn't realized my version was so old
because the version listed in the download page is 16.12.8. I'll check the
current verison list from now on.
On Thu, May 18, 2017 at 3:32 AM, Alexander Burger
wrote:
> Hi Bruno,
>
> > Looking at the source, this is the line t
Alex's explanation of his workflow got me exited, so I've downloaded the
Penti keyboard. I installed it and set it up as the default keyboard, and
it runs! Penti is written in big letters on the screen, but when I tap my 5
fingers to start it the shadows only appear under two of the fingers, and
th
Hi Alex.
> does "multitouch" just mean more than one finger?
Apparently yes. I just downloaded an app to test the maximum multitouch
input and it is, indeed, two. I'll go to my vendor and see if I can get my
phone exchanged for one that can at least get up to 5.
Thanks for the quick response!
On the subject of low? and upp?, how does picolisp know if a character is
upper or lower case?
Is there a list of all upper and lower case characters built in to the
interpreter, and the character is checked against that list?
Or is casing information is built into unicode?
On Sat, Jun 17, 2017 at
Hi Geo! Thanks a lot for the info!
I did a google search and it turns out Unicode does come with several text
files that create mappings between letters of different cases. The most
important one is UnicodeData.txt. It has the one to one mappings between
lower and upper case.
Though my quick google
Hi Alex, Geo.
Ok, so the lower-case upper-case testing and mapping is actually encoded
into these lists, and the function charType takes the character number in
unicode, modifies it, and uses that as an index in the lists to get that
information. No lookup in a special file. Thanks for correcting
Hi list,
I'm writing a script that shows a person a math expression (like "2 + 3")
waits for an answer, then returns if its right or wrong.
What I want though, is for it to wait something like 3 seconds and, if
there is no input, assume the user doesn't know and return "WRONG".
I thought of using
That is just what I needed! thanks alex
On Sat, Aug 26, 2017 at 12:32 AM, Alexander Burger
wrote:
> Hi Bruno,
>
> > I'm writing a script that shows a person a math expression (like "2 + 3")
> > waits for an answer, then returns if its right or wrong.
> > What I want though, is for it to wait som
I'm going through the "Learn Prolog Now!" ebook and I ran into this query:
?- loves(marsellus,X), woman(X).
And I can't figure out how to do it in pilog.
Is there a function that can test multiple queries at once, like or/2 does?
thanks
Yeah! that is exactly right!
All this time I had tried to use the "?" function like this:
(? ((loves Mark @X) (woman @X)))
But it returned NIL.
So, when you search for a variable that can satisfy more than one predicate,
you make a list of predicates (call it PList) and pass it as argument to
(pr
OH, I just realized how!
(? (loves Mark @X) (woman @X))
It seems obvious in hindsight XD
On Sun, Jul 1, 2018 at 10:37 PM Bruno Franco
wrote:
> Yeah! that is exactly right!
>
> All this time I had tried to use the "?" function like this:
> (? ((loves Mark @X) (woman @X)))
done, voted
On Sat, Jun 30, 2018 at 9:44 AM Joe Golden wrote:
> Hey! Vote! It's simple and painless ;-)
>
> On Sat, Jun 30, 2018 at 04:01:50PM +0200, Manuel Cano wrote:
> >Hi,
> >
> >Hey! Vote! I've did it some days ago.
> >
> >
> >Kind regards,
> >Manu
> >
> >2018-06-30 14:10 GMT+02:00 Arie v
u deserve and need.
> *Von:* brunofrancosala...@gmail.com
> *Gesendet:* 2. Juli 2018 5:46 vorm.
> *An:* picolisp@software-lab.de
> *Antworten:* picolisp@software-lab.de
> *Betreff:* Re: A query in Pilog
>
> OH, I just realized how!
>
> (? (loves Mark @X) (woman @X))
>
> I
The prolog saga continues!
This time, I'm having trouble with unification.
I have this predicate:
vertical(line(point(X, Y), point(X, Z))).
That gets unified with this query:
vertical(line(point(1, 2), point(1, 3))).
In prolog, this returns true.
But when I run what I (think) is the equivalent
Y)
(point @X @Z)) part,
and since that's what is used to unify the query,
the query must have that same "(vertical line ..." structure.
But that's just a guess. If there is some deeper meaning I would be happy
to know :D
On Mon, Jul 2, 2018 at 11:23 PM Bruno Franco
wrote:
> Th
-> vertical
>
> the name of the sym (vertical) gets consed into the (line (point @X @Y)
> (point @X @Z)) part,
> and since that's what is used to unify the query,
> the query must have that same "(vertical line ..." structure.
>
> But that's just a gue
12:21:13AM -0500, Bruno Franco wrote:
> > I had too many parentheses in the query.
> >
> > The correct form is:
> > (? (vertical line (point 1 2) (point 1 3)))
>
> No, this does not look right. We can't tell much unless we know all your
> definitions.
>
&
Oh, I see! Thanks!
On Tue, Jul 3, 2018 at 1:45 PM Alexander Burger wrote:
> Hi Bruno,
>
> > (be vertical (line (point @X @Y) (point @X @Z)))
> > (be horizontal (line (point @X @Y) (point @Z @Y)))
> >
> > and the query:
> > (? (vertical line (point 1 2) (point 1 3)))
>
> Yes, OK, but then I would
there is this rule in prolog:
p :- p.
That is infinitely recursive. If you query the database for
?- p.
It gets thrown into an infinite loop.
I've tried to recreate that in pilog, with no success.
: (be p (() p))
How can you write p :- p. in pilog, so that it does the infinite loop that
I expect?
Thanks Alex, it worked exactly
On Tue, Jul 10, 2018, 00:46 Alexander Burger wrote:
> Hi Bruno,
>
> > there is this rule in prolog:
> > p :- p.
> > That is infinitely recursive. If you query the database for
> > ...
> > How can you write p :- p. in pilog, so that it does the infinite loop
> that
Well, for the conditional exit in the iterators (for, do, and loop),
I would do something like this:
(use Y
(for X (1 2 3 4 5)
(setq Y (mumble-mumble X))
(NIL Y (println "this does not work")) ) )
Though I'm not sure that is the most elegant way to go XD.
As for the local exit
actually, you could just put the function (mumble-mumble X) in the place
of Y:
(for X (1 2 3 4 5)
(NIL (mumble-mumble X)
(println "this does not work")) )
On Thu, Jul 12, 2018 at 9:27 PM Bruno Franco
wrote:
> Well, for the conditional exit in the iterators (for, do, a
three questions:
1) what parts of picolisp have you had trouble understanding? Which clashed
with your previous experience as a programmer?
2) What features of picolisp are you using right now? Did you learn
something interesting while using them that you would like others to know?
3) is there a
What are they?
thanks!
On Sat, Mar 23, 2019 at 1:39 AM Alexander Burger
wrote:
> On Sat, Mar 23, 2019 at 12:21:59AM +, PositronPro wrote:
> > Original Message
> > On Mar 23, 2019, 5:48 AM, PositronPro wrote:
> > > They are some tools my install shows balance, pilIndent ssl, httpGate,
> pi
Soo, yeah. I'm studying common lisp, and coming from picolisp setf confused
me at first. The concept does not seem to appear on picolisp, and I
wondered why its not there.
The only reference I could find was this:
https://www.mail-archive.com/picolisp@software-lab.de/msg03604.html
it mentions that
all right, thanks!
On Thu, Jun 27, 2019 at 12:27 PM wrote:
> So, reading Alex’s comments and also the definition of the “joke” `setf`
> here:
>
> On Thu, 27 Jun 2019 10:29 -04:00, Mike wrote:
>
> https://github.com/picolisp/picolisp/blob/dev/misc/setf.l
>
>
> informs me that the answer to Bruno’
I'm studying lib/sumul.l, specifically the 'grid function. I understand how
it works now, but I have two doubts:
1) why are symbols in the grid interned?
2) what does the F in FX and FY stand for?
here's the code for reference:
(de grid (DX DY FX FY)
(let Grid
(make
(for X DX
thank you!
On Sun, Apr 12, 2020 at 2:01 AM Mike wrote:
> > I'm studying lib/sumul.l, specifically the 'grid function.
>
> In my repo you would find a lot of usage examples for grid:
> https://git.envs.net/mpech/tankf33der/
>
> (mike)
>
> --
> UNSUBSCRIBE: mailto:picolisp@software-lab.de?subjectU
I am interested too in an online conference. Its the only way I could
attend anyways. And saving it up for playback on youtube interests me.
On Thu, Apr 23, 2020 at 1:58 AM O.Hamann wrote:
> Timely, short, clear communication, thank you for that, Alex.
>
>
> I do not really have any real experie
Unfortunately, 8 UTC is too early for me XD, I'll have to wait for the 16
UTC meeting
On Thu, Jul 2, 2020 at 12:06 PM C K Kashyap wrote:
> I can't wait :)
>
> On Thu, Jul 2, 2020 at 9:46 AM Alexander Burger
> wrote:
>
>> On Thu, Jul 02, 2020 at 09:28:09AM -0700, C K Kashyap wrote:
>> > Just to
In vip, if I have a file like:
_
# file with a single line of code
(prin "print me on the command window")
___
is there a way to select the line with the code and send it to the command
window for execution, like slime for emacs?
thanks alex! It works perfectly
On Mon, Aug 31, 2020, 01:12 Alexander Burger wrote:
> Hi Bruno,
>
> > In vip, if I have a file like:
> > _
> > # file with a single line of code
> > (prin "print me on the command window")
> > ___
> >
> > is there a way to selec
since it does not come as a termux package anymore, can I compile it on my
phone?
76 matches
Mail list logo