Let's start Scheme

2011-12-29

括弧ゴルフ

折角リーダーマクロを作ったし括弧ゴルフでもしてみるかとやってみた。以下のサイトのルールで。
本当にLispはカッコが多い?
最後にあるLispのリーダーマクロを参考にGaucheのfoldを使ったケースを実装してみた。
#! /usr/local/bin/sash
(set-macro-character #\! (lambda (p c) (read-delimited-list #\$ p)))
! import ! srfi :1 $ $
! fold ! lambda ! x y $ ! print ! - x 1 $ "!= " y $ ! * x y $ $ 1
  ! iota ! string->number ! cadr ! command-line $ $ $ 2 $ $
まぁ、ある意味当たり前だが、括弧8個でいける。
set-macro-characterは本来は(sagittarius reader)をインポートして使うべきだが気にしない。
しかし、これ見てSchemeと思う人はおらんだろうなぁ。
ちょっと文字数を減らしてみた。
#! /usr/local/bin/sash
(set-macro-character #\! (lambda (p c) (read-delimited-list #\$ p)) #t)
!import !srfi :1 $$
!fold !lambda !x y $ !print !- x 1 $ "!= " y $ !* x y $$ 1
  !iota !string->number !cadr !command-line $$$ 2 $$
単に!をnon-termにしただけ。あと、連続した$はスペース入れる必要がなかった。
よりbrainf**kに見えるなぁ。まぁそれほどではないが。

No comments:

Post a Comment