Converter lista de 2 itens em um par pontilhado?


7

P: como posso converter uma lista de 2 itens em uma conscélula de par pontilhado ?

Posso converter uma lista de 2 itens em um par pontilhado com:

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

Estou apagando: existe uma função interna que faz isso ou devo executar a minha própria?


5
Plugue sem vergonha: sugerir é ótimo em casos como este. Coloque sua entrada como '(1 2), sua saída como '(1 . 2)e ela sugerirá (apply #'cons '(1 2))para você!
Wilfred Hughes

Respostas:


11

consfaz uma célula contras com dois argumentos. applyusa uma lista como argumentos para uma função. Quando seus poderes se combinam: (apply #'cons x)converte uma lista de dois elementos em uma célula de contras (sem ter que bisbilhotar dentro da lista) e gera um erro se a lista não for longa.


É impressionante como isso é mais conciso e inclui o tratamento adequado de erros.
Daniel Jour
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.