DrScheme включает в себя несколько «обучающих» диалектов Схемы, которые являются ограниченными подмножествами (они налагают больше ограничений, чем) стандартной схемы R 5 RS или R 6 RS. Используемый вами диалект, вероятно, ограничивает вас использованием операторов if
, в которых вы предоставляете значения для обеих ветвей. Фактически, я только что проверил, и похоже, что все «обучающие» диалекты запрещают вам использовать оператор if
только с одной ветвью.
Это поможет вам научиться программировать в аппликативном (иногда известном как функциональный ) стиле программирования, в котором вы не полагаетесь на побочные эффекты, а вместо этого вычисляете значения просто применяя функции и возвращая результаты от них. В аппликативном стиле, без побочных эффектов, единственным результатом оператора является возвращение значения. Оператор if
, который не возвращает значение в одной из его ветвей, не будет иметь значения для этого случая; это было бы бесполезно и фактически вызывало бы неопределенное поведение, когда вы пытались использовать значение, возвращаемое этим оператором if
. В аппликативном стиле каждое утверждение в языке является выражением, которое оценивается по значению, которое он вычисляет, а не по побочным эффектам, которые он вызывает.
Если вы используете display
для предоставления вывода, вы не используете чисто аппликативный стиль. Это прекрасно, но многие введения в Scheme любят начинать с представления аппликативного стиля, потому что гораздо проще рассуждать и узнавать, как все на самом деле работает.
Поскольку вы не работаете с текстом, который предполагает аппликативный стиль программирования, я бы порекомендовал выбрать другой диалект. В меню «Язык» выберите «Выбрать язык», а затем я бы порекомендовал выбрать либо «R5RS» (который должен быть как можно ближе к стандарту), либо «Довольно большой» (то есть R5RS плюс куча удобных расширений PLT).