Functions inside loops

Discussion of Common Lisp
Post Reply
christian123
Posts: 2
Joined: Sat Nov 19, 2011 6:41 pm

Functions inside loops

Post by christian123 » Sat Nov 19, 2011 6:50 pm

Hello, I am writing a code to create a tree in lisp but I am facing the following problem

Here is my code
(defun create_tree (M N D)
(if (> N M)
nil
(loop for i from 1 to D for j from 1 to D
if (< (+ i j) (+ D 1))
(create_tree M N i j)
)
))

This gives a syntax error, however when I comment the "(create_tree M N i j)" line, this works. Please let me know what the problem is...

I believe the problem is calling a function inside a loop. More generally, is it possible to create a function inside a loop?

Thank you
BS

edgar-rft
Posts: 226
Joined: Fri Aug 06, 2010 6:34 am
Location: Germany

Re: Functions inside loops

Post by edgar-rft » Sun Nov 20, 2011 1:32 am

The create_tree function is defined to take three arguments (M N D) but inside the loop it is called with four arguments (create_tree M N i j).

- edgar

christian123
Posts: 2
Joined: Sat Nov 19, 2011 6:41 pm

Re: Functions inside loops

Post by christian123 » Sun Nov 20, 2011 8:11 am

Here is my code
(defun create_tree (M N D)
(if (> N M)
nil
(loop for i from 1 to D for j from 1 to D
if (< (+ i j) (+ D 1))
(create_subtree M N i j)
)
))
Sorry for the trouble. However, I found a way around it using dotimes inside of loop.

Post Reply