나는 학교를위한 계획 과제를 진행하고 있는데, 레코드 "유형"(목록으로 구현 됨) (음악 레코드를 나타냄)을 정의하는 것과 관련된 질문이 있습니다.스킴 : 레코드 목록에 추가하기
제가 문제가되는 질문은 이러한 레코드의 목록을 만드는 절차를 만든 다음이 목록에 레코드를 추가하는 함수를 만드는 것입니다. 이것은 꽤 간단하지만 뭔가 잘못하고있는 것처럼 느껴집니다.
목록에 요소 (예 :이 예에서는 레코드 선반)를 추가하는 방법을 알고 있지만이 add
함수를 호출 할 때이 목록을 올바르게 유지하는 방법을 모르겠습니다. 여기에 내가 가지고있는 게있어 :
(define (add-record record lst)
(append lst (list record)))
나는 예상대로 작동하지만 문제는이 절차를 호출 할 때입니다.
(define record-self '())
내 첫 번째 시도했지만, 물론 때마다 나는 그 단지 정의 record-shelf
목록에 전달하는 add-record
절차 레코드를 추가, 음, 내 추가 기능은 새로운 목록을 반환합니다 (즉, 복사, 첨부 된 기록과 함께). 이것은 의미가 있지만, 내가 원하는 것인지 확실하지 않습니다. 내가 지금처럼 목록에 레코드의 무리를 추가하고 싶었 그래서 경우
: 그것은 내가 원하는 발생하지 않습니다 물론
(add-record highway61 record-shelf)
(add-record sgtPepper record-shelf)
, record-shelf
가 업데이트되지 않기 때문에. 그리고 나는이 시점에서 우리가 set!
또는 과제를 사용하기로되어 있다고 생각하지 않습니다.
매번 반환 된 목록 (add-record
)의 복사본을 가져 와서 다음 호출에서 반환 된 목록을 사용해야합니까?
함수형 프로그래밍에서는 전역 변수를 피해야합니다. 따라서 귀하의 최종 질문에 대한 대답은 '예'입니다. '(add-record sgtPepper (add-record highway61 record-shelf))' – Enrique
그런데 아주 잘 표현 된 질문입니다. – JasonFruit