我正在尝试使用 set! 修改列表元素的汽车的 cdr,但出现错误:“set!不是标识符”。谁能向我解释为什么会这样?顺便说一句,我开始使用对象。
#lang racket
(define (multiset)
(let ((main-list '()))
(define (empty)
(eq? main-list '()))
(define (insert x)
(cond ((empty)
(set! main-list (cons (cons x 1) main-list)))
((= (car (car main-list)) x)
(begin (set! (cdr (car main-list))
(+ 1 (cdr (car main-list))))))
(else (cdr main-list))))
多重集表示为对的列表。例如,如果我有一个列表 '(1 1 1 2 2 2),那么多重集表示将是 '((1.3)(2.3))