Lisp Programming/Overview

From Wikibooks, open books for an open world
Jump to navigation Jump to search

An overview, eh? So, very quickly, here are the nuts and bolts;

(defun ! (x)          ; Defines a factorial function denoted by the exclamation mark symbol. 
  (if (> x 0)
      (* x (! (- x 1)))
      1))

tail-end recursion... creating a factorial function.

(setf this '(hello world opps goodbye))
(car this) => hello
(cdr this) => (world opps goodbye)
(cadr this) => world
(cdar this) => probably an error

lists, what lisp is named for, and a few functions that get at lisp.

if you must, you can also do:

(setf ... same...
(first this) => hello
...
(second this) => world

but you can't compose it (ex have doing car cdr be cadr)

and yay, macros...

(defmacro when (cond &body body)
   (if (cond)
      (progn ,@body)))

by this time, we're kind of getting in over our heads, but hey!

(defun do-nothing (anargument :key akeywordargument :opt anoptionalargument :rest everythingelseinalist))

I couldn't figure out a way to incorporate all four types of function arguments into one (you can't, and it's generally a bad idea to combine more than 2 of them.)

There's also the CLOS (common lisp object system) and a whole lot of other stuff that you probably should know about, but if you want to really, you better work through a good tutorial.

So hey, that's kind of a rough gist of Lisp. Have fun lisping!