Для обычного списка у вас есть много опций, (list)
, null
, '()
все работает. Но как вы строите пустой список mutable? The documentation, похоже, не предоставляет никакой функции-конструктора.Как создать пустой изменчивый список в Racket?
ответ
Если вы просто хотите знать, что является правильным терминатором для изменяемого правильного списка, то это то же самое, что и для неизменяемого. Оценка '()
дает тот же ответ, что и оценка (mlist)
, поэтому нет никакой разницы между неизменными списками.
Если вы хотите изменить список, начинающийся с нулевых элементов, например, с изменением пустого списка, добавив элемент впереди, вы не можете этого сделать. Пустой список ()
- неизменный синглтон во всех системах Scheme. Это единственное представление пустого списка. У вас есть два возможных решения: Сделайте манекен mcons
, чтобы представить главу вашей структуры данных, которая всегда находится перед первым элементом или просто мутирует привязку для первого элемента. В зависимости от того, как вы собираетесь работать с ops на пустых структурах, они различаются по полезности.
Как только вы закроете ручей без неизменности, почему бы не пойти на все с milst
s? Преимущество состоит в том, что существует семантика «конструктора», доступная для пустых изменяемых списков ... и несколько служебных процедур для работы с изменяемыми списками.
#lang racket
(require compatibility/mlist)
(define empty-mutable-list (mlist))
Это, вероятно, стоит отметить, что '()
также mlist:
> (mlist? '())
#t
В Racket manual это четко указано:
Аналогично, изменяемый список не является списком, за исключением что пустой список также является пустым изменчивым списком.
Так что те же самые операторы, которые использовались для создания пустого списка, могут быть использованы для создания пустого изменяемого списка.
Причина очень проста: пустой список представляет собой специальную структуру данных без компонентов: поэтому, если у вас нет компонентов, нет ничего, что может быть мутировано. Таким образом, изменяемый пустой список - это тот же объект, что и пустой список. Вы можете мутировать только автомобиль или cdr изменчивой пары с set-mcar!
или set-mcdr!
, по той простой причине, что они являются компонентами структуры данных.
- 1. Список в списке передается как пустой список - Racket
- 2. Как создать пустой список кортежей?
- 3. Как создать изменчивый CDialog в MFC?
- 4. Создать пустой Список в immutable.js
- 5. Как создать пустой список в XML
- 6. Как обновить список в схеме (Racket)
- 7. Список преобразования строк в Racket
- 8. racket: обновить список
- 9. RACKET Как создать счетчик счетчиков?
- 10. Racket, преобразовать список в значения
- 11. В Racket есть список массива?
- 12. Как вручную сгладить список в Racket (Схема)
- 13. Попытка создать пустой список в C
- 14. Создать HTML-код в Racket
- 15. Создать/имитировать изменчивый подкласс неизменной встроенного типа
- 16. Как изменить четный список на нечетный список в racket/scheme?
- 17. Как сделать изменчивый ItemizedOverlay
- 18. Deedle - создать пустой список и серию
- 19. Racket lexer - возвратный список минусов
- 20. Как преобразовать определенный список в набор в Racket?
- 21. Добавление элементов в новый список в Racket
- 22. 'изменчивый' в определении типа
- 23. Как сохранить пустой список?
- 24. Изменчивый GameObject в единстве3d
- 25. Как отображается пустой список?
- 26. Как инициализировать пустой список?
- 27. Как использовать изменчивый многоадресный итератор?
- 28. Заказать список по типу в Racket?
- 29. Racket: изменить пунктирную пару в список
- 30. для/список аннотаций в типизированном/racket
Из документов: «пустой список также является пустым переменчивым списком» – stchang
@stchang, это то, что я получаю только для просмотра документации по функциям. ответьте как ответ, и я отметю правильно –