¿Convertir la lista de 2 elementos en un par de puntos?

7

P: ¿cómo puedo convertir una lista de 2 elementos en una conscelda de par de puntos ?

Puedo convertir una lista de 2 elementos en un par de puntos con:

(let ((list '(1 2)))
  (cons (car list) (cadr list)))        ; => (1 . 2)

Estoy en blanco: ¿hay una función incorporada que hace esto, o debería rodar la mía?

Dan
fuente
55
Plug descarado: sugerir es genial en casos como este. ¡Pon tu entrada como '(1 2), tu salida como '(1 . 2)y te sugerirá (apply #'cons '(1 2))!
Wilfred Hughes

Respuestas:

11

conshace una celda de contra de dos argumentos. applyusa una lista como argumentos para una función. Cuando sus poderes se combinan: (apply #'cons x)convierte una lista de dos elementos en una celda de contras (sin tener que hurgar dentro de la lista) y genera un error si la lista no es 2 larga.

erikstokes
fuente
Es increíble cómo esto es más conciso e incluye el manejo adecuado de errores.
Daniel Jour