cat再実装の続き

cat - syobosyobo softdevの続き。
引数にファイル名を渡すと、ファイルを連結表示する。
引数なしなら、標準入力を用いる。

#! /usr/bin/gosh
(use file.util)

(define (cat args)
  (define (count n)
          (if (= n (length args)) #f
              (begin
                  (print (file->string (list-ref args n)))
                  (count (+ n 1)))))
  (count 1))

(define (main args)
  (set-signal-handler! SIGINT (lambda _ (exit 0)))
  (if (eqv? 1 (length args))
    (while (print (read)))
    (cat args))
 0)

インデントの感覚がよくわからないので、適当に字下げしてます。
あとはループで苦労したり。たぶん今までの感覚とはだいぶちがうんだろうなぁ。

以下のサイトのGaucheのソースなんかを参考にしてみました。
速度計測七題 - osdev-jの日記 - osdevjグループ


難しいけど、なんやかんやと新たな感覚が身についているようで、たのしいぞ!!

 (print "Thanks!! Scheme and Gauche!!!")