Язык программирования Scheme, 4-е издание
Схема Четвертое издание Р. Кент Дибвиг Иллюстрации Жан-Пьера Эбера |
- Предисловие
- Глава 1. Введение
- Раздел 1.1. Синтаксис схемы
- Раздел 1.2. Соглашения об именах схем
- Раздел 1.3. Типографские и условные обозначения
- Глава 2. Начало работы
- Раздел 2.1. Взаимодействие со схемой
- Раздел 2.2. Простые выражения
- Раздел 2.3. Оценка выражений схемы
- Раздел 2.4. Переменные и выражения Let
- Раздел 2.5. Лямбда-выражения
- Раздел 2.6. Определения верхнего уровня
- Раздел 2.
7. Условные выражения
- Раздел 2.8. Простая рекурсия
- Раздел 2.9. Назначение
- Глава 3. Двигаясь дальше
- Раздел 3.1. Синтаксическое расширение
- Раздел 3.2. Подробнее Рекурсия
- Раздел 3.3. Продолжения
- Раздел 3.4. Продолжение стиля прохождения
- Раздел 3.5. Внутренние определения
- Раздел 3.6. Библиотеки
- Глава 4. Процедуры и привязки переменных
- Раздел 4.1. Ссылки на переменные
- Раздел 4.2. Лямбда
- Раздел 4.3. Чехол-лямбда
- Раздел 4.4. Локальная привязка
- Раздел 4.5. Несколько значений
- Раздел 4.6. Определения переменных
- Раздел 4.7. Назначение
- Глава 5. Операции управления
- Раздел 5.1.
Процедура Приложение
- Раздел 5.2. Секвенирование
- Раздел 5.3. Условные обозначения
- Раздел 5.4. Рекурсия и итерация
- Раздел 5.5. Маппинг и фолдинг
- Раздел 5.6. Продолжения
- Раздел 5.7. Отложенная оценка
- Раздел 5.8. Несколько значений
- Раздел 5.9. Эвал
- Раздел 5.1.
- Глава 6. Операции над объектами
- Раздел 6.1. Константы и котировка
- Раздел 6.2. Общая эквивалентность и предикаты типов
- Раздел 6.3. Списки и пары
- Раздел 6.4. Номера
- Раздел 6.5. Фикснумы
- Раздел 6.6. Флонумс
- Раздел 6.7. Персонажей
- Раздел 6.8. Струны
- Раздел 6.9. Векторы
- Раздел 6.10. Байтвекторы
- Раздел 6.11. Символы
- Раздел 6.
12. Булевы значения
- Раздел 6.13. Хэш-таблицы
- Раздел 6.14. Перечисления
- Глава 7. Ввод и вывод
- Раздел 7.1. Транскодеры
- Раздел 7.2. Открытие файлов
- Раздел 7.3. Стандартные порты
- Раздел 7.4. Строковые и байтвекторные порты
- Раздел 7.5. Открытие пользовательских портов
- Раздел 7.6. Портовые операции
- Раздел 7.7. Операции ввода
- Раздел 7.8. Операции вывода
- Раздел 7.9. Комфортный ввод-вывод
- Раздел 7.10. Операции с файловой системой
- Раздел 7.11. Преобразование байт-вектора/строки
- Глава 8. Синтаксическое расширение
- Раздел 8.1. Привязки ключевых слов
- Раздел 8.2. Преобразователи синтаксических правил
- Раздел 8.
3. Syntax-Case Transformers
- Раздел 8.4. Примеры
- Глава 9. Записи
- Раздел 9.1. Определение записей
- Раздел 9.2. Процедурный интерфейс
- Раздел 9.3. Осмотр
- Глава 10. Библиотеки и программы верхнего уровня
- Раздел 10.1. Стандартные библиотеки
- Раздел 10.2. Определение новых библиотек
- Раздел 10.3. Программы верхнего уровня
- Раздел 10.4. Примеры
- Глава 11. Исключения и условия
- Раздел 11.1. Вызов и обработка исключений
- Раздел 11.2. Определение типов условий
- Раздел 11.3. Типы стандартных условий
- Глава 12. Расширенные примеры
- Раздел 12.1. Умножение матриц и векторов
- Раздел 12.2. Сортировка
- Раздел 12.
3. Конструктор наборов
- Раздел 12.4. Подсчет частоты слов
- Раздел 12.5. Схема принтера
- Раздел 12.6. Форматированный вывод
- Раздел 12.7. Метациклический интерпретатор схемы
- Раздел 12.8. Определение абстрактных объектов
- Раздел 12.9. Быстрое преобразование Фурье
- Раздел 12.10. Алгоритм объединения
- Раздел 12.11. Многозадачность с двигателями
- Список литературы
- Ответы на избранные упражнения
- Формальный синтаксис
- Резюме форм 9 0026
- Индекс
Р. Кент Дибвиг / Язык программирования Scheme, четвертое издание
Copyright © 2009 The MIT Press. Воспроизведено в электронном виде с разрешения.
Иллюстрации © Жан-Пьер Эбер, 2009 г.
ISBN 978-0-262-51298-5 / LOC QA76.73.S34D93
заказать эту книгу / об этой книге
http://www. scheme.com
Алфавитная таблица примитивов схемы
| Первый аргумент меньше или равен второму? |
= | Два числа равны? (Например, равно? , но работает только для чисел). |
> | Первый аргумент больше второго? |
>= | Первый аргумент больше или равен второму? |
абс | Возвращает абсолютное значение аргумента. |
аккумулировать | Применить функцию объединения ко всем элементам (глянь сюда). |
выровнять | Возвращает строку с интервалом заданной ширины (см. здесь). |
и | (особая форма) Все ли аргументы являются истинными значениями (т. е. не #f )? |
появлений | Возвращает количество раз, когда первый аргумент встречается во втором.![]() |
append | Возвращает список, содержащий элементы списков аргументов. |
применить | Применение функции к аргументам в списке. |
assoc | Возврат соответствующего ключа записи списка ассоциаций. |
раньше? | Первый аргумент идет в алфавитном порядке перед вторым? |
начало | (Специальная форма) Выполнить последовательность инструкции (см. здесь). |
bf | Сокращение для бутпервый . |
бл | Аббревиатура бутласт . |
логический? | Возвращает true, если аргумент равен #t или #f . |
butfirst | Возвращает все, кроме первой буквы слова или слова предложения.![]() |
butlast | Возвращает все, кроме последней буквы слова или слова предложения. |
c...r | Комбинации автомобиля и cdr (см. здесь). |
автомобиль | Возвращает первый элемент списка. |
cdr | Возвращает все элементы списка, кроме первого. |
потолок | Округлите число до ближайшего целого числа. |
дочерние элементы | Возвращает список дочерних элементов узла дерева. |
закрыть все порты | Закрыть все открытые порты ввода и вывода. |
close-input-port | Закрыть входной порт. |
close-output-port | Закрыть выходной порт. |
cond | (Особая форма) Выберите один из нескольких вариантов
(глянь сюда).![]() |
минусы | Добавление элемента в начало списка. |
cos | Возвращает косинус числа (из тригонометрии). |
count | Возвращает количество букв в слове или количество слов в предложении. |
датум | Возврат данных узла дерева. |
определить | (Специальная форма) Создать глобальное имя (для процедуры или другого значения). |
дисплей | Распечатать аргумент без начала новой строки. |
пусто? | Является ли аргумент пустым, т. е. пустым словом "" или пустым предложением () ? |
eof-объект? | Является ли аргумент объектом конца файла? |
равно? | Два аргумента — одно и то же? |
ошибка | Распечатайте сообщение об ошибке и вернитесь к приглашению схемы.![]() |
четный? | Является ли аргумент четным целым числом? |
каждые | Применение функции к каждому элементу слова или предложение (см. здесь). |
expt | Возведите первый аргумент во вторую степень. |
фильтр | Выберите подмножество списка (см. здесь). |
first | Возвращает первую букву слова или первое слово предложения. |
этаж | Округлите число в меньшую сторону до ближайшего целого числа. |
для каждого | Выполнение вычисления для каждого элемента списка. |
if | (особая форма) Выберите один из двух вариантов (см. здесь). |
целое? | Является ли аргумент целым числом? |
item | Возвращает $n$-ю букву слова или $n$-е слово предложения.![]() |
сохранить | Выберите подмножество слова или предложения (см. здесь). |
lambda | (Особая форма) Создайте новую процедуру (см. главу \lambchop). |
last | Возвращает последнюю букву слова или последнее слово предложения. |
длина | Возвращает количество элементов в списке. |
лет | (Особая форма) Дайте временные имена значениям (см. здесь). |
list | Возвращает список, содержащий аргументы. |
list->vector | Возвращает вектор с теми же элементами, что и список. |
list-ref | Выбор элемента из списка (считая с нуля). |
список? | Является ли аргумент списком? |
загрузить | Считать программный файл в Scheme.![]() |
log | Возвращает логарифм числа. |
make-node | Создать новый узел дерева. |
make-vector | Создать новый вектор заданной длины. |
map | Применение функции к каждому элементу списка (см. здесь). |
max | Возвращает наибольший из аргументов. |
member | Возвращает подмножество списка, начиная с выбранного элемента, или #f . |
член? | Является ли первый аргумент элементом второй? (глянь сюда). |
мин | Возвращает наименьший из аргументов. |
новая строка | Перейти на новую строку печати. |
не | Вернуть #t , если аргумент равен #f ; вернуть #f в противном случае.![]() |
ноль? | Является ли аргумент пустым списком? |
номер? | Является ли аргумент числом? |
нечетное? | Является ли аргумент нечетным целым числом? |
открытый входной файл | Открыть файл для чтения, вернуть порт. |
open-output-file | Открыть файл для записи, вернуть порт. |
или | (особая форма) Являются ли какие-либо из аргументов истинными значениями (т. е. не #f )? |
процедура? | Является ли аргумент процедурой? |
quote | (особая форма) Возвращает аргумент без оценки (глянь сюда). |
частное | Разделить числа, но округлить до целого числа. |
random | Возвращает случайное число ≥ 0 и меньше аргумента.![]() |
чтение | Чтение выражения с клавиатуры (или файла). |
read-line | Читать строку с клавиатуры (или файла), возвращая предложение. |
строка чтения | Чтение строки с клавиатуры (или файла), возврат строки. |
уменьшить | Применить функцию объединения ко всем элементам список (см. здесь). |
остаток | Возвращает остаток от деления первого числа на второе. |
повторяется | Вернуть функцию, описанную f ( f (⋅⋅⋅( f ( x )))) (см. здесь). |
округлить | Округлить число до ближайшего целого числа. |
se | Сокращение для предложения . |
предложение | Соедините аргументы в одно большое предложение.![]() |
предложение? | Является ли аргумент предложением? |
show | Распечатать аргумент и начать новую строку. |
show-line | Показать предложение-аргумент без круглых скобок. |
sin | Возвращает синус числа (из тригонометрии). |
sqrt | Возвращает квадратный корень из числа. |
квадрат | Не примитив! (определить (квадрат x) (* x x)) |
след | Отчет обо всех будущих вызовах процедуры. |
untrace | Отменить эффект trace . |
вектор | Создайте вектор с аргументами в качестве элементов. |
vector->list | Возвращает список с теми же элементами, что и вектор.![]() |