/
Программирование
/
Курс Racket
/

Списки как дерево

Racket: Списки как дерево

Списки могут быть вложенными. В такой форме вместо конкретного значения подставляется новый список ():

(- 1 8) ; вычитание, или список из трёх элементов
(+ 1 (- 3 2)) ; сложение, или список из трёх элементов, в котором третий элемент — список из трёх элементов
(- (* 3 3) (- 2 3) (+ 5 1)) ; вычитание, или список из четырёх элементов

Вопрос для самоконтроля. Сколько элементов в списке ((3) 8 (7 9))?

Список — рекурсивная структура данных. Любой элемент может быть списком и содержать внутри себя элементы-списки. Ниже — пример полноценной Racket-программы.

; В конце этого курса вы сможете не только понять этот код, но и написать его самостоятельно
(define (square x) (expt x 2))

(define (squarer xs)
  (if (empty? xs)
      empty
      (cons (square (first xs)) (squarer (rest xs)))))

(squarer '(1 2 3 4 5))

Код выглядит непривычно и не очень понятно, но попробуйте поменять угол зрения. Посмотрите на этот код как на структуру данных. Проследите за тем, как списки вкладываются друг в друга и форматируются.

Фактически получается, что исходный код на Racket — это древовидная структура.

Задание

Напишите программу, которая выводит на экран разность чисел 128 и 37.

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются