2012-06-02 12 views

答えて

43

理由

ifの片腕の変異体は、バグを防ぐために、ラケットから削除されました。

機能コードでは、常にifという2つの武器を使用しています。

(if test expr-on-true expr-on-false) 

expr-on-falseに構文エラーをもたらさないであろう第二のアームを忘れるが、ランタイムエラーに(式#<void>を返すことになります)。

機能コードでこのような頻繁に発生するバグを防ぐため、ifの片腕型にはwhenという形式を導入することが決定されました。

(when test expr-on-true) 

偶発的なバグを防ぐことに加えて、新しいフォームは、明らかにコードが副作用に依存していることは、コードの読者に示しました。あなたはラケットでSchemeのコードを実行しようとすると、エラーメッセージ

if: bad syntax (must have an "else" expression) 

が表示された場合は、whenまたはunlessif式を書き直す必要があります

をラケットするために、標準的なスキームからのコードを移植

単純に書き換える:

(if test expr1) to (when test expr1) 

(if (not test) expr1) to (unless test expr1). 
関連する問題