parent nodes: Lisp | ListasLisp

ListasLisp

Ejemplos:
    '(rose violet daisy buttercup)
    
    '(rose       violet  daisy                  buttercup)

    '(rose 
      violet 
      daisy 
      buttercup)


    '(+ 5 7)  un símbolo y dos números
    
    '(this list has (a list inside of it))
    
    '()  empty list
Estas no son listas
    '(uno, dos, tres)  no es lista por que tiene comas
    
    '(Hola. Adios)     no es lista por que tiene punto

Atoms

Evaluar una lista

'(hola adiós hasta luego)
    Devuelve:  (hola adiós hasta luego)

(+ 2 3)
    Devuelve: 5

Errores

(esto da error)  

Debugger entered--Lisp error: (void-function esto)
  (esto da error)
  eval((esto da error))
  eval-last-sexp-1(nil)
  eval-last-sexp(nil)
  call-interactively(eval-last-sexp)
  recursive-edit()
  byte-code("჆ऀ䀀윀=Ħ
La primera línea del error: Debugger entered--Lisp error: (void-function esto) indica que la función esto no está definida.


Nombres de símbolos y definición de funciones

The Lisp interpreter

Secuencia de ejecución del intérprete de Lisp al evaluar una lista:

  1. Mira si empieza por apóstrofe '
  2. Si es así devuelve la misma lista.
  3. Si no es así, busca si el primer elemento de la lista tiene una definición de función.
  4. Si es así sigue las instrucciones de la función.
  5. Si no es así imprime un mensaje de error.
  6. Al final devuelve un valor con el resultado
  7. Al mismo tiempo que devuelve un valor puede hacer otras cosas: mover el cursor, copiar archivos, etc, estas acciones son llamadas side effect

Complicando un poco

     (+ 2 (+ 3 3))
     
     8

Byte Compiling

Variables

Argumentos

Función message

     (message "He saw %d %s"
              (- fill-column 32)
              (concat "red "
                      (substring
                       "The quick brown foxes jumped." 16 21)
                      " leaping."))

Dar valor a una variable

set

setq

Contando

that sets the counter variable to zero; and a second `setq' expression that increments the counter each time it is evaluated.
     (setq counter 0)                ; Let's call this the initializer.
     (setq counter (+ counter 1))    ; This is the incrementer.
     counter                         ; This is the counter.


todo.low: Lisp: usar el manual en txt, para cortar y pegar, en el pdf no se puede.