Почему результат списка, возвращаемый моей функцией, выглядит смешно?

(define (evenList xs)
    (cond
        ((null? xs) '())   
        ((eq? (cdr xs) '()) '()) 
        (else (cons (cadr xs) (evenList (cddr xs))))))

Я использую этот код, но он не создает список так, как я этого хочу. (evenList (list 1 2 3 4)) оценивается как (cons 2 (cons 4 '())) в REPL, но я хочу, чтобы это было похоже на (list 2 4).

«но это не создает список так, как я хочу», не очень полезно. Каков текущий результат? Каков ожидаемый/требуемый результат?

AcK 22.12.2020 00:30

(evenList (список 1 2 3 4)) Ответ этой функции в приведенных выше кодах (минусы 2 (минусы 4'())) а я хочу чтобы было так (список 2 4)

DarKing 22.12.2020 07:59

Спасибо дружище решил мою проблему

DarKing 22.12.2020 16:52

@DarKing - я отредактировал ваш вопрос, чтобы прояснить проблему и упростить поиск для будущих посетителей; Я надеюсь, что это нормально. Я также переместил свой предыдущий комментарий в ответ.

ad absurdum 22.12.2020 17:07
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
4
111
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваш код работает и дает правильный результат, насколько я могу судить. Я предполагаю, что вы используете язык для начинающих студентов. Список (2 4) представлен как (cons 2 (cons 4 '())) в REPL при использовании языка для начинающих студентов; этот же список представлен как (list 2 4) в REPL при использовании среднего студенческого языка. В #lang racket вы увидите это как '(2 4) в REPL. Во всех случаях базовая структура данных списка одинакова; это просто вопрос печатного представления списка.

мы действительно должны сделать какой-то специальный тег для этого «форматирования печати» в Racket. эти вопросы продолжают появляться, и наличие тега поможет найти похожие вопросы.

Will Ness 23.12.2020 00:14

@WillNess - это хорошая идея. Я искал обман, прежде чем ответить, и ничего не мог найти; тег был бы полезен. Поскольку печатные представления так важны в lisp в целом, я мог бы назвать печатное представление. На первый взгляд, я не вижу ничего подобного в наличии прямо сейчас.

ad absurdum 23.12.2020 02:21

хорошая идея, я думаю. уверен, что его подхватят и другие языки с богатым поверхностным синтаксисом для данных, например, например. (слышу ;)) Clojure. вы должны просто добавить этот тег здесь, в этом вопросе. если по какой-то причине вам это не разрешено, отправьте мне пинг, и я это сделаю, я тоже это делал раньше (например, с помощью map-функции). но так как вы придумали это, вы должны иметь честь сделать это самостоятельно. :)

Will Ness 23.12.2020 08:06

как насчет того, чтобы переименовать его в «repl-printed-representation», если быть более точным? Я нашел и пометил только несколько вопросов, так что не проблема перейти и пометить их заново. другой вариант — всегда также помечать их как «repl», но ограничение в 5 тегов иногда не позволяет этого. Что вы думаете? «печатное представление» кажется слишком широким, может также включать проблемы с сериализацией или ошибочно приниматься за таковое и удаляться. (!)

Will Ness 23.12.2020 09:25

@WillNess - я не обязательно против этого, но я не думаю, что печатные представления предназначены только для REPL. Читатели Лиспа читают печатные представления и могут читать их, например, из файлов. Я не уверен, что есть преимущество в том, чтобы быть более конкретным, но REPL также, вероятно, является местом, где большинство вопросов возникнет у спрашивающих. Я не чувствую себя слишком сильно в любом случае ....

ad absurdum 23.12.2020 09:32

Да, я печатал, когда вы добавили это; это справедливое замечание. Хорошо, согласен.

ad absurdum 23.12.2020 09:34

большой. теперь давайте посмотрим, будем ли мы презираемы мета-толпой. :) :)

Will Ness 23.12.2020 09:39

скрещенные пальцы ;)

ad absurdum 23.12.2020 09:39

Другие вопросы по теме