Listas en LISP

Las listas en LISP común son simplemente una sola lista enlazada. En LISP, las listas están diseñadas como una string de registros. Al hablar de estructuras de registros en LISP, el concepto de Contras es vital. Contras en LISP es una estructura de registro con 2 componentes principales. Una función de contras toma 2 argumentos y devuelve una nueva celda de contras con car y dir.

  1. car: Se utiliza para acceder al primer valor en una función contras.
  2. cdr: Se utiliza para acceder al segundo valor en la función cons.

Nota: si el segundo valor no es nulo o es solo otra celda de contras, los valores se imprimen como un par de puntos entre paréntesis.

Ejemplo:

Lisp

; cons with 2 string object reference
(write (cons 'Geeksforgeeks 'Is_Best))
(terpri)
 
; cons with 1 nil value as argument
(write (cons 999 nil))
(terpri)
 
;cons with another cons as argument
(write (cons 'A (cons 'B nil)))
(terpri)
 
;cons with otyhen nested cons as argument
(write (cons 'A (cons 'B (cons 'C nil))))

Producción:

(GEEKSFORGEEKS . IS_BEST)
(999)
(A B)
(A B C)

Listas en LISP:

La función de lista en LISP se puede usar para crear una lista en LISP.

Sintaxis:

write( list value1 value 2 ...)

Nota: La función de lista puede tomar cualquier no. de argumentos

Ejemplo: 

Lisp

(write (list 1 2))
(terpri)
(write (list 'g 'e 'e'k's))
(terpri)
(write (list 'Geeksforgeeks' nil))
(terpri)
 
;list with a cons as an argument
(write (list 3 4 'geeks (car '(G . F)) (* 99  +78)))
(terpri)
 
; list with another list as an argument
(write (list (list 'Geeksforgeeks 'is) (list 'the 'best 'resource 'for 'DSA)))

Producción:

(1 2)
(G E E K S)
(GEEKSFORGEEKS NIL)
(3 4 GEEKS G 7722)
((GEEKSFORGEEKS IS) (THE BEST RESOURCE FOR DSA))

Accediendo a Elementos de una LISTA:

La combinación de funciones car y cdr en LISP común se puede usar para extraer elementos de una lista. La combinación de carr y cdr se puede abreviar como cadadr/caar/cadr y así sucesivamente.

Ejemplo:

Lisp

; here we will extract the string Best
(write (cadadr '(Geeksforgeeks (is best) (for Data Structures))))
(terpri)
 
; here we will extract the string Geeks
(write (caar (list (list 'Geeks 'for) 'geeks)))  
(terpri)
 
; here we will use the abbv. cadr
(write (cadr (list (list 'A 'B) (list 'C'D))))

Producción:

BEST
GEEKS
(C D)

Publicación traducida automáticamente

Artículo escrito por ddeevviissaavviittaa y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *