Chuyển đổi danh sách 2 mục thành một cặp chấm?


7

Q: làm thế nào tôi có thể chuyển đổi danh sách 2 mục thành một consô cặp chấm ?

Tôi có thể chuyển đổi danh sách 2 mục thành một cặp chấm với:

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

Tôi đang trống: có một chức năng tích hợp nào thực hiện việc này hay tôi nên tự cuộn?


5
Sh plug plug: đề nghị là tuyệt vời trong trường hợp như thế này. Đặt đầu vào của bạn là '(1 2), đầu ra của bạn như '(1 . 2)và nó sẽ gợi ý (apply #'cons '(1 2))cho bạn!
Wilfred Hughes

Câu trả lời:


11

conslàm cho một tế bào khuyết điểm ra khỏi hai đối số. applysử dụng một danh sách làm đối số cho hàm. Khi sức mạnh của chúng kết hợp: (apply #'cons x)chuyển đổi một danh sách hai thành phần thành một ô khuyết điểm (mà không phải chọc vào bên trong danh sách) gây ra lỗi nếu danh sách không dài 2.


Thật tuyệt vời khi điều này vừa ngắn gọn hơn vừa bao gồm xử lý lỗi thích hợp.
Daniel Jour
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.