Subject: Re: hallo world in lisp
From: Erik Naggum <erik@naggum.net>
Date: Tue, 11 Sep 2001 13:31:13 GMT
Newsgroups: comp.lang.lisp
Message-ID: <3209203870489803@naggum.net>

* Luciano Ribichini
> I use Linux (kernel 2.2.x)

  Which distribution?

> I would like to try the LISP language.

  Good!

> Can you tell me where to find a free/GLP lisp (interpreter, compiler or
> what else) and how to run the lisp variant of the famuos hallo world!
> c-program?

  If you use Debian GNU/Linux, just apt-get install cmucl or clisp.

  The famous C program is famous for its ablity to produce an executable
  with a minimal amount of fuss.  It really shows off the Unix environment,
  and not the language.  However, an executable is only a funtcion that
  resides on disk in the Unix file sysem and which you call from the
  shell's read-execute interactive loop.  Common Lisp systems offer their
  own interactive loop, called the read-eval-print loop and do not
  generally take part in the shell interactive loop the same way other
  languages do.  Some find this a insurmountable obstacle to using Common
  Lisp, others love it.  However, the code for the core program is simple:

(defun hello-world ()
  (write-line "Hello, Lisp world!"))

  Suppose you put this in a file, hello.cl.  To compile it, evaluate

(compile "hello.cl")

  You now have an object file that can be loaded into the Common Lisp
  system:

(load "hello")

  You are now ready to execute the hello-world function:

(hello-world)

  If you want to run an "executable" from the shell interactive loop, there
  are many ways to accomplish this, but no standard way.  Suppose you use
  CLISP and have a Linux kernel with misc-binaries support you can do this,
  as root:

echo ":CLISP:E::fas::/usr/bin/clisp:" >> /proc/sys/fs/binfmt_misc/register
echo ":CLISP:E::lisp::/usr/bin/clisp:" >> /proc/sys/fs/binfmt_misc/register

  You can now actually just write

(write-line "hello, Lisp world!")

  into the file hello.lisp and chmod +x hello.lisp and execute it directly.
  Note that you would have to add (hello-world) at the end of the hello.cl
  file I indicated above to execute anything.

///