Цитата Как разрабатывать программы (HTDP):
ПЕРЕДАЧИ ДАННЫХ ОПРЕДЕЛЕНИЕ состояния, в смеси английского и схемы, как мы намерены использовать класс структур и как мы строим элементы этот класс данных.
Учитывая проблему, которую вы решаете в качестве программиста, необходимо решить, как ваши входные данные представлены в виде значений. Для того, чтобы другие могли понять вашу программу, важно документировать, как это делается в деталях.
Некоторые входные данные просты и могут быть представлены одним числом (например, температурой, давлением и т. Д.).
Другие типы данных могут быть представлены как фиксированное количество чисел/строк. (например, cd может быть представлено как имя автора (строка), заголовок (строка) и цена (число)). Чтобы упаковать фиксированное число значений в виде одного значения, можно представить эту структуру.
Если нужно представить неизвестное количество чего-либо, скажем, cds, то нужно использовать список.
Определение данных - это просто ваше описание того, как данные представлены в вашей программе.
Чтобы объяснить, что такое определение структуры, я процитирую из HTDP:
СТРУКТУРА ОПРЕДЕЛЕНИЕ является, как этот термин говорит, новая форма определения. Здесь> является определение DrScheme о POSN:
(define-struct posn (x y))
Давайте посмотрим на пример кд снова. Поскольку в Racket нет встроенных «значений cd», нужно определить, что такое cd-значение. Это делается с определением структуры:
(define-struct cd (author title price))
После определения производится можно использовать косметику кд построить значение кд. Чтобы объяснить, что автор и заголовок должны быть строками, и ожидается, что цена будет номером, вы должны записать определение данных, в котором объясняется, как make-cd предполагается использовать.
Я забыл ответить на ваш второй вопрос:
(2) Какие именно альфы и беты в контрактах, которые приходят до функций, т.е.
берут: Num α-лист -> α -list
Предполагается, что альфа заменена на тип.
Если взять целочисленный список (список целых чисел в качестве входных данных), то вывод будет целым списком.
Если взять строковый список (список строк в качестве ввода), то вывод будет строковым списком.
Короче говоря, если элемент принимает список значений с некоторым типом (альфа) в качестве входных данных, то вывод представляет собой список значений с одним и тем же типом (alsp alpha).
Это не вопрос Схемы/Ракетки, поскольку речь идет о соглашениях при разработке программ и связанной с ними терминологии (похоже, вы не используете Typed Racket, и в этом случае функциональные контракты являются только комментариями) , Если вы готовитесь к среднесрочной перспективе, лучшие люди могут ответить на этот вопрос, это ваш учитель, ТА или одноклассники. –