두 개의 매개 변수 인 기호 A와 기호 목록 L을 취하는 함수 을 정의하고 L에 A가 요소 중 하나로 포함되어있는 경우에만 t를 반환합니다.복잡한 Lisp 문제
이것이 원래의 질문입니다. 나는 LISP를 처음 사용하고 있으며 구문에 대한 설명과 함께 몇 가지 코드를 원한다. 자바와 C++ 배경 LISP는 매우 다른 특성을 가지고 있습니다. 도와주세요.
지금까지 내 코드는 성공적으로 두 개의 입력을 매개 변수로 사용합니다.
의사 코드 : 나는 A의 값을 목록의 첫 번째 값과 비교 한 다음 목록이 비어있을 때까지 재귀 호출을 사용하여 목록과 변수 A를 다시 함수에 전달합니다. List가 하늘의 경우는 null를 돌려줍니다.
목록에 중첩 루프가있는 경우 어떻게 인식합니까?
예 : (contains #\b '(a (((b))) c))
-> 반드시 인쇄해야합니다.
지금까지 내가 코드 무엇을 :
(defun contains (a list)
(if (eq a(car list))
(princ "t")
(contains a (cdr list))))
(contains #\B '(B a c d e f g))
을 나는 목록의 마지막에 검출하는 방법이 필요합니다. 중첩 된 목록을 검색하는 방법.
난 당신이 표준'MEMBER' 기능을 사용할 수 없습니다한다고 가정? – Barmar
질문에 중첩 목록에 들어가야 할 필요는 없습니다. – Barmar
불행히도 아니오, 나는 defun, car cdr cons와 같은 Primitive 함수 만 사용할 수 있습니다. –