나는 common-lisp의 초보자이며 재미로만 사용합니다. 그러나 하이퍼 스펙과 다른 장소의 문서가 꽤 명확하기 때문에 맵퍼와 맵퍼의 차이점을 알고 있다고 가정합니다.원자에 대한 Mapcan의 동작
그러나 mapcan 함수가 목록 요소를 호출하면 요소가 목록 대신 원자로 평가됩니다. mapcan이 nconc를 사용하여 목록을 추가하면 목록이 없으면 오류가 발생할 것으로 예상됩니다. 내가
(mapcan (lambda (x) (+ 2 x)) '(1 2 3 4))
을 시도하는 경우
는하지만 SBCL 및 CLISP에서 '6'으로 평가한다. (이 예제에 대한 실용적인 필요가 없을 수도 있습니다, 난 단지 궁금 해서요) 값을 반환하는 것이 단순한 오류보다 좋을 수도 있지만 nconc에 대한 목록이 없으면 mapcan이 마지막 값을 반환한다는 것을 알 수 있습니다.
이 동작에 대한 이유가 있습니까?
LispWorks 및 GCL에서 오류가 발생했습니다. –