[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

learning lisp: when



n高橋です。

Koichi INOUE writes:

> あ、ifのヘルプにきちんと仕様が明記されていますね。
> 最後に評価された式という話ではなく、そういうもののようです。

あ、本当だ。

> whenはCにはないタイプのspecial formなのでどうも直感的に使えませんでし
> た。今後はそうします。

え?  Lisp の when は、C の if 文で else 文が後続しない場合そのものじゃ
ありませんか。

#include <stdlib.h>
#include <stdio.h>
main (int argc, char *argv[])
{
  double x, y;

  x = atof(argv[1]);
  y = atof(argv[2]);
  if (y == 0) {
    fprintf(stderr, "Second argument must not be zero\n");
    exit(-1);
  }
  printf("%f / %f = %f\n", x, y, x/y);
}

の if を Lisp の when にすると、

(when (zerop y)
  (print "Second argument must not be zero\n")
  -1)

ですよ。

-- 
TAKAHASHI Naoto
ntakahas@...
http://www.m17n.org/ntakahas/