Схема программы для превращения каждого элемента списка в атомы - PullRequest
0 голосов
/ 27 октября 2011

Мне нужна программа, которая принимает список в качестве входных данных и превращает каждый элемент, найденный в списке, в атомы.Вот что у меня есть, но я продолжаю сталкиваться с ошибками.

    (define make-lat
      (lambda (l)
(cond
  ((null? l) (quote ()))
  (else
   (cond
     ((list? (car l))
      (cons (caar l)
            make-lat (cdr l)))
      (else 
       ((atom? (car l))
        (cons (car l)
       (make-lat(cdr l)
           )))))))))

Может кто-нибудь мне помочь?

Ответы [ 2 ]

3 голосов
/ 27 октября 2011

Ваш код выглядит немного дезорганизованным для меня, и я думаю, что вы, возможно, захотите подумать о выполнении шагов, описанных в Как разрабатывать программы Рецепт дизайна:

Шаг первый: вы можете написать заявление о цели для вашей программы? Следует сказать, что делает функция.

Шаг второй: вы можете написать контракт? Должно быть указано, какие данные принимает программа, и что он производит. Здесь нужно быть конкретным, и любые данные, которые вы укажете, должны быть либо встроенными, либо иметь явное «определение данных».

Шаг третий: напишите несколько тестовых случаев! Укажите пример ввода и ожидаемый результат.

Чтобы узнать больше о рецептах дизайна, ознакомьтесь с Как разрабатывать программы .

1 голос
/ 28 октября 2011

Ваш вопрос выглядит как домашнее задание.

Вот несколько вещей, которые вы можете сделать, чтобы попробовать и отладить.

  • Используйте Repl, чтобы опробовать некоторые части функции. Например, если в cond вы проверяете на ноль, вы можете сделать это и на REPL.

(null? '(1 2 3)) или (null? '())

  • Проверка отдельных S-Exps. Вы уверены, что каждая функция, которую вы вызываете, имеет открывающий и закрывающий парены?

  • В качестве подсказки, упростите ваши условия. Вам не нужно вкладывать conds. Вы можете поставить все условия по одному.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...