This is a read-only archive of lispforum.com. The forum was locked to new users and posts and is preserved here as static HTML from a database snapshot taken on 2019-09-07.

cons

7 posts · 8526 views

Hi every . i have question about cons in lisp . how can i make this list
(1 (4 9 (12) ))

i used this rule (cons 1 (cons (cons 4 (cons 9 (cons (cons 12()))) ()) ())) but interpreter return error :(

Re: cons

I think the main issue is that the empty list must be written as '(). If you write (), then it will try to evaluate the function with no name.

In Common Lisp, '() can also be written as nil.

Re: cons

tnx . i found how to build a nested list

Re: cons

Even if unquoted empty lists were recognized, the following part of your expression is not a pair:
(cons (cons 12 ()) )

Re: cons

Actually, in Common Lisp, () is equivalent to (reads as) NIL, which is self-evaluating, so it's a completely legitimate way of writing the empty list. (Which does not mean it isn't stylistically questionable.)

Re: cons

Ehsan wrote:Hi every . i have question about cons in lisp . how can i make this list
(1 (4 9 (12) ))

i used this rule (cons 1 (cons (cons 4 (cons 9 (cons (cons 12()))) ()) ())) but interpreter return error :(
Maybe it's easier to compose it with list first eg.
(list 1 (list 4 9 (list 1 2)))
Then (list a b c) is an abbrivation for (cons a (cons b (cons c NIL)))
So translating the first list would get you:
(cons 1(cons (list 4 9 (list 1 2)) NIL))
Then do the same with the rest. Note that I'm using NIL here to keep away the the extra parenthesis. If you're using Scheme you need to use '()
It's quite difficult to get it right so before list and quasiquoting it must have been a source of many errors :)

nuntius wrote:I think the main issue is that the empty list must be written as '(). If you write (), then it will try to evaluate the function with no name.
This is true for Scheme. The empty list needs to be quoted since it cannot be evaluated.
nuntius wrote: In Common Lisp, '() can also be written as nil.
For Common Lisp quoting is optional. (), NIL, '() and 'NIL evaluates to NIL.
I'm the author of two useless languages that uses BF as target machine.
Currently I'm planning a Scheme compiler :p

Re: cons

tnx everyone . I created this instruction , but this is very confusing :D

(cons 1 (cons (cons 2 (cons 6 (cons 7 (cons 8 ()))))(cons 3 ( cons (cons 4 (cons 9 (cons (cons 12())())))(cons(cons 5(cons 10 (cons 11()))) ())))))


(1 (2 6 7 8) 3 (4 9 (12)) (5 10 11))