DOSEIの日記

技術メモ+日常ログ

An Original Language (1)

コレクションという概念。コレクションはオブジェクトの集合であって、そのすべてにメソッドを実行したり、部分集合を作ったり、と、集合演算が可能。じゃあセットといってもいいか。コンテキストにコレクションの要素を追加するには"+"で行う。実は、オブジェクトへのリファレンスはすべて、1要素のコレクションと扱われる。というわけで、これまでの操作と何も変わらない。

@obj +obj2 +obj3 :method

これで、要素3のコレクションができまして(コレクションということは、リファレンス自体が情報として持っている)、methodがそれぞれに連続で呼ばれる。コレクションは順序リストである。プロパティ参照した場合は、すべてのプロパティのコレクションがコンテキストになる。
オブジェクトはすべて同じクラスでなくてもいい。ただし、メソッドやプロパティを参照するには、すべてにそれが備わっていないといけない(これは、インターフェースとして定式化する)。

アルゴリズム。コレクションのソート、検索、マッチング、トリミングなど。アルゴリズムは"#"で指定する。具体的なことはまだ未定。たとえば

@objects #select(.data > 1)

とかかなぁ。

雑多なこと。循環参照(ループ参照)してるときは、自動解放されないよ?→そんな構造にしないように努力。
そもそもこんな文法じゃあ、実装しても重そう→気にしない。いつか、快適に動かせるマシンスペックになるよ。