たしかに変わった意味でもすげえ。

Matzにっき(2007-01-15)
Fortressもオープンソースに。すげえ。

特にすげえ((c)Matz)のは、表示--そう、表記でなくて表示--の仕方まで言語仕様で定めている事。

The Fortress language specification (PDF), pp21-22

2.4 Rendering

One aspect of Fortress that is quite different from other languages is that various program constructs are rendered in particular fonts, so as to emulate mathematical notation. In the examples above, this was evident by the use of italics when rendering variable names.

Fortressの演算子の例

例えば

f(x) = x^2 + sin x - cos 2 x

と書くと、

f(x) = x2 + sin x - cos 2x

で、配列の要素へのアクセス

a[i]

は、

ai

といった具合。これだけならまだいいのだけど、右の図のように演算子にUnicodeをびしばし使ってる。

これは型の表記まで徹底していて、例えば64bit整数はℤ64と表記する。ちなみにこれはU+2124 - DOUBLE-STRUCK CAPITAL Z。無限精度は数字なしのℤ、実数は当然ℝなのだけど、ちゃんと有理数ℚと区別されるのかしらん....

なんというか、21世紀のAPLというか、そのまま実行できるTEXというか....Fortressの語源は"Secure FORTRAN"とのことなのだけど、見た目はそれほどFOTRANには似ていない。読みやすいといえばすごく読みやすいのだけど、たとえばblogにcode snippetをコピペするとかすごくやりづらいかも。

もちろん仕様を見ての通り、表記の方はASCIIで全部できるのだけど、仕様を読む限りではlambdagreek_small_letter_lambdaは、どちらもλと表示され、同じ変数名ということになる。semantics(意味)はあくまで表記ではなく表示の方というのはどうなんだろ。

ちなみにUnicode演算子はPerl6でもサポートされているけど、あくまでも表記であって、表示までは仕様に定めてない。

どうせなら、漢字も識別子(identifier)として使えたらいいのに。さらに欲を言えば、BIDIをちゃんと使って、ヘブライ語やアラビア語で書く時には結合則も左右反転するとか....

Dan the Man with Too Many Languages to Learn