風つかいです。
機械伯爵さん、どうもです。
Iconは、未だ開発元のアリゾナ大学でサポートされています。
それとは別に、Iconの拡張版のUniconという言語が、Icon開発にたづさわった
メンバーで開発中ですが、未だベータ版の状態です。
Iconのライセンスは、古き良き時代の PDS(pubulic domain software)
ですが、Uniconのライセンスは、GPLになるみたいです。
> 大体、:=で代入するタイプの言語は、代入は文なのに、ICONは値を持つ
>式ですから、そこらへんも不思議なんですが・・・
Icon版2の
while sum +:= numeric(("0" ~== read()))
の方が、特徴が出ているかと思います。
これは、whileループの中に、文字列の比較式が含まれるものですが、
"0" ~== read() は、
・比較式が成功(不一致)すれば、
右辺値(読み込んだ値)になる。
・比較式は失敗(一致)すると、
値は &fail(失敗値とでもいいましょうか)。
という式です。比較式も値を持ちます。
比較式が成功すると whileループは継続しますが、
比較式が失敗すると、numeric()も失敗し、 +:=も失敗し、
whileも失敗(ループ終了する)し、ループを抜ける。
という動作をします。
ということで、if ... then ... の構文を少なくできるケースが多いです。
慣れると便利です。
風つかい(hshinoh@...)
IconのWWWは、http://www.cs.arizona.edu/icon/
UniconのWWWは、http://unicon.sourceforge.net/index.html
BGM: 風の音