Lisp    up
  similar languages: Scheme  
 


 Hello World   Michael Neumann
(print "Hello World")
Prints "Hello World" onto the screen.


  Factorial (iterative)   Common Lisp   Marco Baringer
(defun fact (n)
  (loop for i from 2 to n
        for fact = 1 then (* fact i)
        finally (return fact)))

(format t "Factorial of 6 is: ~A~%" (fact 6))
Calculates the factorial. Results 720.


  Factorial (recursive)   Common Lisp   Marco Baringer
(defun fact (n)
  (if (zerop n)
     1
     (* n (fact (1- n)))))

(format t "Factorial of 6 is: ~A~%" (fact 6))
Calculates the factorial. Results 720.


 Hello World   Common Lisp   Marco Baringer
(write-line "Hello World!")
Prints "Hello World" onto the screen.


 OO - Shape, Circle, Rectangle   Common Lisp   Marco Baringer
;; define the various classes

(defclass shape ()
  ((pos-x :type real
          :accessor pos-x)
   (pos-y :type real
          :accessor pos-y))
  (:documentation "A generic shape in a 2 dimensial plane"))

(defclass rectangle (shape)
  ((width :type real
          :accessor width)
   (height :type real
           :accessor height))
  (:documentation "A rectangle"))

(defclass cirle (shape)
  ((radius :type real
           :accessor x-radius))
  (:documentation "An cirlce"))

;; define the methods

(defmethod move-to ((thing shape) new-x new-y)
  "Move the shape THING to the new position (new-x, new-y)"
  (setf (pos-x thing) new-x
        (pos-y thing) new-y))

(defmethod shift-to ((thing shape) delta-x delta-y)
  "Move the shape THING by (delta-x, delta-y)"
  (incf (pos-x thing) delta-x)
  (incf (pos-y thing) delta-y))

(defmethod scale ((rec rectangle) factor)
  "Scale the rectangle REC by factor"
  (with-slots (width height) rec
    (setf width (* factor width)
          height (* factor height))))

(defmethod scale ((cir circle) factor)
  "Scale the circle CIR by factor"
  (setf (radius cir) (* (radius cir) factor)))



 Squares (1)   Common Lisp   Friedrich Dominicus
(defun print-squares (upto)
  ( loop for i from 1 to upto
         do (format t "~A^2 = ~A~%" i (* i i))))
Outputs the squares from 1 to 10.


 Squares (2)   Common Lisp   Marco Baringer
(dotimes (i 10)
  (format t "~D " (expt i 2)))
Outputs the squares from 1 to 10.


 Squares (3)   Common Lisp   Marco Baringer
(loop for i from 1 upto 10
      for i^2 = (expt i 2)
      do (format t "~D " i^2))
Outputs the squares from 1 to 10.


 Squares   Emacs Lisp   Michael Neumann
(let ( (a 1) )
  (while (<= a 10)
    (princ (* a a)) (princ " ")
    (setq a (+ a 1))
  )
)
Outputs the squares from 1 to 10.