BOA Constructor

В Racket можно создать составной тип данных (структуру) и получить автоматически конструктор, селекторы и функцию-предикат для определения типа:

; Определяем тип данных для точки на прямоугольной системе координат
(define-struct pos (x y))

; Сразу же получаем конструктор
(define P1 (make-pos 3 6)) ; создать точку P1

; Селекторы
(pos-x P1) ; 3
(pos-y P1) ; 6

; И функцию для определения типа
(pos? P1) ; true
(pos? "test") ; false

При создании точки в конструкторе важен порядок аргументов: сначала должен идти x, потом y. Такие конструкторы иногда называют BOA Constructor (By Order of Arguments), почти как змею.

Кстати, о змеях. Гарри Поттер в книжке разговаривал с удавом (Boa Constrictor). В фильме вместо него вставили тигрового питона (Python bivittatus).

Удавы живут в основном в Южной Америке и яйцеживородящие, питоны же из старого света и яйцекладущие.