Lisp help - is this function right?

Reply

Join Date: May 2005
Posts: 18
Reputation: Mr. is an unknown quantity at this point 
Solved Threads: 0
Mr. Mr. is offline Offline
Newbie Poster

Lisp help - is this function right?

 
0
  #1
Nov 23rd, 2005
Hello,

the listp function doesn't apply the full "list" rules.

Example

(cons 1 ( cons 2 3 ))

Isn't a list as the definition goes:

* either an empty list (nil)
* or a cons cell that has a list for a cdr

altough listp yelds true to that "list"

So I'm writing a function that will do the full thing

(defun isList (list)
   (if (null list)
        t
        (if (not (consp list ))
             nil
             (and t (isList (cdr list))))))

This is correct for the following examples

(cons 1 ( cons 2 ( cons 3 ( cons 4 5 ))))
returns nil
(cons 1 (cons 2 3))
returns nul
(cons 1 ( cons 2 ( cons 3 ( cons 4 nil ))))
returns t
(1 2)
returns t

It seams ok. Is it?

Thamls.
Reply With Quote Quick reply to this message  
Join Date: Jun 2005
Posts: 2,039
Reputation: Rashakil Fol is just really nice Rashakil Fol is just really nice Rashakil Fol is just really nice Rashakil Fol is just really nice 
Solved Threads: 139
Team Colleague
Rashakil Fol's Avatar
Rashakil Fol Rashakil Fol is offline Offline
Super Senior Demiposter

Re: Lisp help - is this function right?

 
0
  #2
Nov 23rd, 2005
It looks like a fine implementation of the behavior of the Scheme function, LIST?. I don't know why you'd use (and t (isList (cdr list))) when that means the same thing as (isList (cdr list)).

However, Common Lisp (I'll assume that's the variant you're using, since you didn't specify) has a different meaning for listp.

Originally Posted by Common Lisp the Language, 2nd Edition
listp object

listp is true if its argument is a cons or the empty list (), and otherwise is false. It does not check for whether the list is a ``true list'' (one terminated by nil) or a ``dotted list'' (one terminated by a non-null atom).
All my posts may be redistributed under the GNU Free Documentation License.
Reply With Quote Quick reply to this message  
Reply

This thread is more than three months old.
Perhaps start a new thread instead?
Message:



Similar Threads
Other Threads in the Legacy and Other Languages Forum
Thread Tools Search this Thread



About Us | Contact Us | Advertise | DaniWeb | Acceptable Use Policy | RSS Feed

©2003 - 2009 DaniWeb® LLC