最初は echo
というわけで DOS窓ではなく UNIX な echo を Scheme でやっと自力で書けた。
ksh% gosh -V Gauche scheme interpreter, version 0.8.13 [utf-8] です。
です。(Windowsバイナリ版)
(define (main args) (define (printargs n) (if (null? n) 0 (begin (display (car n)) (display " " ) (printargs (cdr n)) ) ) ) (printargs (cdr args)) )
閉じ括弧をガシガシ合体させてしまうのが Lisper 風味だと思ってやってみる。
(define (main args) (define (printargs n) (if (null? n) 0 (begin (display (car n)) (display " " ) (printargs (cdr n))))) (printargs (cdr args)) )
おかしい、同じコードなのに、なんかカッコよく見える…。
ちなみに echo を実装するには
- 可変長の入力を得る
- 可変長の文字列の配列を標準出力に吐く
ということが必要なので、Hello World なんかより、よっぽど言語の特性が分かって良いんじゃないかと思います。で、次は cat.scm の予定です。
で、その後、ls.scm に進化。
(define (main args) (define (ls str n) (if (null? n) str (ls (string-append str " " (car n)) (cdr n)))) (if (null? (cdr args)) (sys-system "dir/w") (display (ls "" (cdr args)))) )
おもしれえ。だいぶハマってきました。