¿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?


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.


Es increíble cómo esto es más conciso e incluye el manejo adecuado de errores.
Daniel Jour
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.