Я делаю задачу, которая просит меня написать функцию, которая использует список (dict1) и список (действие), который содержит действие (удалить или добавить) и значение. Обновления должны соответствовать следующим спецификациям:
• Если первый элемент действия «удалить», а ключ находится в словаре, то соответствующее значение в связанном списке следует удалить.
• Если совпадающее значение оказывается последним элементом в связанном списке, то ключ должен оставаться в словаре, но связанный список становится пустым. Если значение отсутствует в словаре, словарь не изменяется.
• Если значение act равно «add» и ключ находится в словаре, то новое значение следует добавить в связанный список в словаре, если оно еще не существует. Если значение уже существует всвязанный список, обновленный словарь не изменится.
• Если значение act равно «add», а ключ не существует в словаре, то следует добавить новую запись списка ассоциаций для ключа. словарь.
Например:
(define dict1 (list (list "Num" (list 5 1.3 -1))
(list "Char" (list #\p))
(list "Str"
(list "cs" "CS" "Computer Science"))))
Тогда
(update dict1 (list "add" true)) =>
(list (list "Num" (list 5 1.3 -1))
(list "Bool" (list true))
(list "Char" (list #\p))
(list "Str" (list "cs" "CS" "Computer Science")))
(update dict1 (list "remove" "cs")) =>
(list (list "Num" (list 5 1.3 -1))
(list "Char" (list #\p))
(list "Str" (list "CS" "Computer Science")))
Я мог бы только сделать первый шаг, вот что я имею до сих пор:
(define (update dict1 act)
(cond
[(equal? (first act) "remove") (remove-value dict1 (second act))]
[(equal? (first act) "add") (add-value dict1 (second act))]))
Для этого вопроса мне разрешено использовать только member?
или remove
. Я знал, что задавал много вопросов в последние пару дней, но я новичок в рэкетах и прилагаю все усилия, чтобы научиться этому :( Пожалуйста, помогите