Найдите встроенную процедуру по имени или задаче, затем откройте справочник с её аргументами, результатами и ошибками. Полный список ниже содержит 205 имён, включая псевдонимы.
Начните с задачи
Чтобы преобразовать каждый элемент списка, используйте map из семейства процедур высшего порядка. Запустите пример на площадке.
(map square (list 1 2 3))Результат
(1 4 9)map вызывает square для каждого элемента и собирает результаты в новый список. Ссылка на процедуры высшего порядка в таблице ведёт к требованиям к аргументам и возвращаемым значениям.
Найдите справочник
В таблице приведены примеры имён из каждого семейства. По ссылкам доступны точные формы вызова, допустимые типы и коды ошибок.
| Задача | Имена для поиска | Аргументы и результаты |
|---|---|---|
| Арифметика | + - * / abs square min max floor ceiling round truncate | один аргумент или переменное число, в зависимости от процедуры; возвращает число |
| Целочисленное деление | modulo quotient remainder floor-quotient floor-remainder truncate-quotient truncate-remainder floor/ truncate/ | два целых числа; возвращает одно или два значения |
| Равенство и сравнение чисел | eq? eqv? equal? = < > <= >= boolean=? | ровно два аргумента для eq?, eqv? и equal?; два и более для остальных указанных сравнений; возвращает булево значение |
| Проверка типов и числовые проверки | zero? positive? negative? even? odd? null? pair? list? empty? boolean? char? string? symbol? number? integer? procedure? vector? bytevector? | один аргумент; возвращает булево значение |
| Списки и составные значения | cons car cdr list append reverse list-ref vector vector-ref vector-set! bytevector-u8-ref | аргументы зависят от процедуры; возвращает одно значение или ноль значений |
| Строки, символы и байты | string-ref string-map char=? char->integer bytevector-u8-ref | аргументы и результаты зависят от процедуры |
| Процедуры высшего порядка | map filter reduce fold-left fold-right all? any? apply for-each vector-map string-map | обход принимает одну коллекцию; apply объединяет явные аргументы с последним списком; результаты описаны в справочнике |
| Исключения и вывод | error raise raise-continuable with-exception-handler display write newline println | аргументы зависят от процедуры; может вызвать исключение или вернуть ноль, одно или несколько значений |
Прочитайте требования к процедуре
Каждая процедура принимает фиксированное или явно указанное переменное число аргументов. При неверном числе аргументов проверьте сигнатуру — запись формы вызова. Код E3xx указывает на ошибку типа или недопустимое значение.
Используйте имя из R7RS, если оно есть. R7RS — стандарт языка Scheme. Документированные псевдонимы имеют тот же смысл, но устаревающие псевдонимы выдают предупреждения.
Все 205 встроенных имён
!= % * + - / < <= = == > >= abs all? any? append apply assoc assq
assv boolean=? boolean? bytevector bytevector-length
bytevector-u8-ref bytevector? caaaar caaadr caaar caadar caaddr
caadr caar cadaar cadadr cadar caddar cadddr caddr cadr
call-with-current-continuation call-with-values call/cc car cdaaar
cdaadr cdaar cdadar cdaddr cdadr cdar cddaar cddadr cddar cdddar
cddddr cdddr cddr cdr ceiling char->integer char-alphabetic?
char-ci<=? char-ci<? char-ci=? char-ci>=? char-ci>? char-downcase
char-foldcase char-lower-case? char-numeric? char-upcase
char-upper-case? char-whitespace? char<=? char<? char=? char>=?
char>? char? complex? cons display dynamic-wind empty? eq? equal?
eqv? error error-object-irritants error-object-message error-object?
even? exact exact->inexact exact-integer-sqrt exact-integer? exact?
expt filter first floor floor-quotient floor-remainder floor/
fold-left fold-right for-each gcd inexact inexact->exact inexact?
integer->char integer? lcm length list list->string list->vector
list-copy list-first list-ref list-rest list-tail list?
make-bytevector make-list make-string make-vector map max member
memq memv min modulo negative? newline not nth null? number->string
number? odd? pair? positive? println procedure? quotient raise
raise-continuable rational? real? reduce remainder rest reverse
round square string->list string->number string->symbol
string->vector string-append string-ci<=? string-ci<? string-ci=?
string-ci>=? string-ci>? string-copy string-downcase string-foldcase
string-for-each string-length string-map string-ref string-upcase
string<=? string<? string=? string>=? string>? string? substring
symbol->string symbol=? symbol? truncate truncate-quotient
truncate-remainder truncate/ values vector vector->list
vector->string vector-copy vector-for-each vector-length vector-map
vector-ref vector-set! vector? with-exception-handler write zero?Вызовите процедуру по имени
Встроенное имя доступно сразу. Чтобы вызвать собственную процедуру под другим именем, сначала определите её. Имена из окружения вызывающего приложения не становятся процедурами Лиспекса автоматически.