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

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

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

Вопрос для самоконтроля. Сколько элементов в списке ((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


Нашли ошибку? Есть что добавить? Пулреквесты приветствуютсяhttps://github.com/hexlet-basics

Упражнение доступно только авторизованным пользователям.

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