E言語. Javaのバージョンを上げたのでついでに試してみた。

 #!/usr/bin/env rune

 println("Hello E language.")


URIリテラル

 var txt := http://d.hatena.ne.jp/teamikl.getText()
 .makdir()
 .setText(txt)

URIだけでなく、Javaのクラスやリモートオブジェクト等のリソースも扱える(らしい)。


Quasiリテラル

 def name := "teamikl"
 var uri := 
 println(uri.getText())

Perlで言う、ダブルクォート内での変数展開みたいなもの。

 my $uri = "http://d.hatena.ne.jp/$name";

正規表現
Quasiリテラルには幾つか種類があって、それぞれ違うサブシチュエーション・パーサが通される。
Perlのクオート演算子 q, qq, qw, qr, qx みたいなものかな。

 # 普通の文字列のmatching
 "ABC" =~ `ABC`

 # 正規表現を用いたmatching
 "WikiWikiName" =~ rx`([A-Z][a-z]){2,}`

E parser, qx ... はシェルなので、これはevalかな。
意味のないコードだけど、使用例:

 def a := e`2 + 3`

この他にも、(未だ実装されていないけど)
XMLパーサやmathパーサ(calcrator)もQuasiリテラルとして使えるようになる(予定だって)。

リテラルをユーザー定義出来たら面白そう。
Perlだったらこういった拡張簡単に出来るんだっけ?
(と、Filter::Util::Callのソースを読んでみる ... Filter::Simpleの方が簡単か。)