memo

ちょっとしたメモ書き(個別表示)

Io : (2006/06/12)
なかなか検索しづらいことで有名な言語「Io」ネタ
とりあえず処理系をインストールして、試しに簡単なhttpdと動的コンテンツを書いてみたんですが、その副産物としてerbのio版を書いてみました(eio.io)

サンプル用のテンプレ

doFile("eio.io")

file := File clone openForReading("sample.eio")
src := file readLines join("\n")
file close

func := eio(src, title)
writeln(func("eio sample"))
関数eioの第一引数はソースコードで、関数化したオブジェクトを返す。
第2引数以降は、この関数オブジェクトが評価される際に受け取る引数の仮引数リスト。
上記の例だと、sample.eioを元に、引数を一つ受け取る関数(サンプルコード中ではfunc)を生成する。
この関数が評価されるさいに受け取った引き数は、sample.eio内ではtitleという変数名で参照できる。

ちなみに、このeio.ioの問題点として、生成された関数オブジェクト内から、普通にトップレベルで宣言された変数を参照できることが挙げられます。
それはIoの問題のような気もしますが。
Ioって名前空間まわりの仕様が貧弱じゃないですか?
(いや、単に私が知らないだけかもしれませんが)
とりあえず、トップレベルでの変数の扱いに注意すれば、特に問題にはならないと思いますが・・・

あと、このコードは正規表現を使ってないので、PCREバインディングライブラリを含まないIoのコアなパッケージでも動くんじゃないかと思います。

: back