Adam Majewski wrote:
> Hi Jaime ,
>
> Thx for answer,
>
> I have made function for creating xpm file:
>
First, it's a lot easier to find the problem if you use more typical
Lisp indentation style. (This particular result was obtained by running
(pprint '(defun ....)) with CMUCL. There will be differences if other
Lisps are used.)
(defun write_to_xpm_file (file)
(let (iwidth 4)
(iheight 4)
(nocolors 2)
(cpp 1)
(file "m.xpm"))
with-open-file
((st file :direction :output :if-exists :overwrite :if-does-not-exist
:create)
(format st "/* xpm */~%static char *a[] = {~%")
(format st "\"~a ~a ~a ~a\",~%" iwidth iheight nocolors cpp)
(format st "* c #000000~%") (format st ". c #ffffff~%")
(format st ".**.~%") (format st ".**.~%") (format st ".**.~%")
(format st ".**.~%") (format st "};~%"))
(format t "file was created " file))
Immediately we can see 3 problems. First is the let form. It should be:
(let ((iwidth 4)
(iheight 4)
(nocolors 2)
(cpp 1)
(file "m.xpm"))
Then we can see another problem: with-open-file needs an opening paren:
(with-open-file
Finally, the last issue is that there are too many parentheses after
with-open-file. It should look like
(st file :direction :output :if-exists :overwrite :if-does-not-exist
So, put all of these fixes together and indent nicely:
(defun write_to_xpm_file (file)
(let ((iwidth 4) (iheight 4) (nocolors 2) (cpp 1) (file "m.xpm"))
(with-open-file
(st file :direction :output :if-exists :overwrite
:if-does-not-exist :create)
(format st "/* xpm */~%static char *a[] = {~%")
(format st "\"~a ~a ~a ~a\",~%" iwidth iheight nocolors cpp)
(format st "* c #000000~%")
(format st ". c #ffffff~%")
(format st ".**.~%")
(format st ".**.~%")
(format st ".**.~%")
(format st ".**.~%")
(format st "};~%"))
(format t "file was created " file)))
(This is CMUCL's pretty printer. My personal style is slightly
different. Each part of let would be on a separate line and I'd put (st
file ...) on the same line as with-open-file.)
It would be beneficial to read a Lisp book. Practical Common Lisp is
one that you can find online.
Ray