読者です 読者をやめる 読者になる 読者になる

ニワン語による最初の言語処理系?

こっちも貼っとく。
D
( Grass the grass-planting programming language )
初めて触った関数型言語がコレなんだけど、FizzBuzzが書けません。
これもzick氏が作ったのかなと思ったけど違うみたい。
Grassのページからもリンクしてあったけど、原作者製でもないのかな。

追記

ブクマにPerlの偉い人のGrassコードが!と思ったらどう見ても適当なw連打です。ありがとうございました。

投稿者コメにあるコードをCommonLispで適当に解説

  • wWWwwww (wを一個出力)
(defun main (self)
  (out w))
  • wWWwwwwWWww (ずっとwのターン)
(defun main (self)
  (progn
    (out w)
    (funcall self self)))

main関数は (main #'main) という感じで、自身を引数にして実行されます。

プリミティブ関数 out succ w inは

(defun out (c)
  (write-char (code-char c)))

(defun succ (c)
  (mod (1+ c) 256))

(defvar w (char-code #\w))
(defun w (c)
  (if (= c w)
	  (lambda (x) (lambda (y) x))
	  (lambda (x) (lambda (y) y))))

(defun in (e)
  (let ((c (read-char)))
	(if c (char-code c) e)))

こんな感じか。
どっか間違ってるかも。
あとで検証。

追記

ソース読み直したらw関数というか文字の扱いが大分違ったorz
あとで書く ->書いた