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.
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.
Ваше упражнение проверяется по этим тестам
#lang racket
(require "../../../src/tests.rkt")
(assert-output "91")Решение учителя откроется через:
20:00
