Io (プログラミング言語)
プロトタイプベースの純粋なオブジェクト指向プログラミング
例外処理
Perl風の正規表現
弱い参照をサポートするインクリメンタルガベージコレクション
高移植性
DLL/共有ライブラリの動的ローディング
イントロスペクション、リフレクション、メタプログラミング
アクターモデルに基づく並行性
コルーチン
小規模な仮想機械
高階関数
最も単純な形式では、次のような1つの識別子でも Io のプログラムと言える。
この doStuff はメソッドであり、引数がないので後ろに括弧をつける必要がない。
doStuff に引数がある場合、次のように記される。
Io はメッセージパッシング言語であり、Io ではコメント以外はメッセージの集積でプログラムが構成される。上掲の例でもそれが現れているがこれが全てではない。メッセージパッシング言語であることを明確に示すため、次の例を示す。
これは、 "version" というメッセージが "System" オブジェクトに送られていることを示している。
演算子は特別であり、これまでの例ほど単純ではない。Ioの構文解析器はインタプリタが定義する演算子をインターセプトし、それをメソッドコールに翻訳する。例えば、次のような記述があったとする。
これは次のように翻訳される。
見ての通り、演算子の優先順位が一応存在しており、C言語での優先順位と同じである。
また、演算子がメソッドコールになっていることにも注意されたい。Io の演算子は全てメソッドである(ただし、例外として代入演算子 ":=" と "=" は構文解析器が全く異なるメッセージに翻訳する)。このため、演算順序を制御するための括弧が不要という特徴がある。