Lisp Programming Language Cheatsheet

Basic cheatsheet for the Lisp programming language, covering some fundamental topics:

1. Variables and Data Types

;; Variables
(setq my-variable 10)

;; Data Types
(setq integer-var 42)
(setq float-var 3.14)
(setq string-var "Hello, Lisp!")
(setq list-var '(1 2 3))
(setq symbol-var 'symbol)

2. Basic Operations

;; Arithmetic Operations
(setq sum (+ 2 3))
(setq difference (- 5 2))
(setq product (* 4 6))
(setq quotient (/ 8 2))

;; Comparison
(setq is-equal (= 10 10))
(setq not-equal (/= 5 10))

3. Conditional Statements

;; If Statement
(if (< x 0)
    (setq result "Negative")
    (setq result "Non-negative"))

;; Cond Statement
(cond
  ((= x 0) (setq result "Zero"))
  ((< x 0) (setq result "Negative"))
  ((> x 0) (setq result "Positive"))
  (t (setq result "Unknown")))

4. Loops

;; While Loop
(setq counter 0)
(while (< counter 5)
  (print counter)
  (setq counter (+ counter 1)))

;; For Loop
(dotimes (i 5)
  (print i))

5. Functions

;; Define a Function
(defun greet (name)
  (format t "Hello, ~a!" name))

;; Call a Function
(greet "Lisp")

6. Lists and Sequences

;; Lists
(setq my-list '(1 2 3 4))

;; Accessing Elements
(setq first-element (first my-list))
(setq rest-of-list (rest my-list))

;; Adding Elements
(setq new-list (cons 0 my-list))

;; Mapping a Function to a List
(setq squared-list (mapcar #'(lambda (x) (* x x)) my-list))

7. Symbols

;; Define a Symbol
(setq my-symbol 'example)

;; Check if a Variable is a Symbol
(symbolp my-symbol)

8. Advanced Topics

;; Closures
(defun make-adder (x)
  #'(lambda (y) (+ x y)))

(setq add5 (make-adder 5))
(funcall add5 3) ; Returns 8

;; Recursion
(defun factorial (n)
  (if (= n 0)
      1
      (* n (factorial (- n 1)))))

This cheatsheet covers some basic concepts in Lisp. Remember, Lisp is known for its powerful features, so this is just a starting point!

Official Reference.

1. What is Lisp?

Lisp is a family of programming languages with a long history and a distinctive, fully parenthesized prefix notation. It is widely used in artificial intelligence, computer science education, and research.

2. What are the advantages of using Lisp?

Lisp has several advantages, including its simple syntax, powerful macro system, and support for interactive development. It is also highly extensible and can be used for a wide range of applications, from web development to scientific computing.

3. What are some popular Lisp implementations?

Some popular Lisp implementations include Common Lisp, Scheme, and Clojure. Each of these dialects has its own strengths and weaknesses and is suited to different types of applications.

4. What is the syntax of Lisp?

Lisp uses a fully parenthesized prefix notation, which means that all expressions are enclosed in parentheses and the operator comes before the operands. For example, the expression (+ 2 3) represents the sum of 2 and 3.

5. What is a macro in Lisp?

A macro is a way to extend the syntax of Lisp by defining new language constructs. Macros are defined using the defmacro special form and can be used to generate code at compile time. They are a powerful feature of Lisp that allows programmers to create domain-specific languages and abstractions.