質問

私が書き込みしようとした(単純な、すなわちeqan?せず)のようなそのようなone?機能:

(define one?
  (lambda (n)
    ((= 1 n))))

しかし、上記しないの仕事しかし、私は、このようなようにそれを呼び出したときに理由ます:

(one? 1)

私は、このエラーで迎えますます:

procedure application: expected procedure, given: #t (no arguments)
<時間>

これを書くために(のリトルスキーマーのからの)正しい方法はあります:

(define one?
  (lambda (n)
    (cond
      (else (= 1 n)))))

なぜcond句でelseを使用する必要はなく、ただ返す(= 1 n)で、あるのでしょうか?

役に立ちましたか?

解決

あなたがそれをしたいと思う理由は何らかの理由がありません。私は私が上で何が起こっているのか占うことができるかどうかを確認するために家に帰るとき、私はTLSの私のコピーをチェックしますが、condか何かについての基本的なものが欠落していない。

の上ご了承の応答:あなたは、ラムダの身体の括弧の余分なセットを持っているので、それは働いていません。それがあるべき

(lambda (n) (= 1 n))
代わりに、値#tまたは#fを返す、引数なしの関数として、その値を呼び出すようにしようとしていること。

ご使用のバージョンの平均で

余分な括弧

他のヒント

動作するはずかのように のリトルスキーマーの便利な、あなたの例のルックスのコピーを持っていません。私はcondは無関係のだと思います。 psudeo-Cに(COND有する)equivantである

int
one(int n)
{     
    switch (foo) {
        default:
           return  1 == n;
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top