最近のキーワード

2006年05月17日

コレクションの操作

Rubyでcollectかmapかと言われると僕はどちらでも良かった。 これは、Smalltalkの影響というよりは、OCLと関数型言語の影響からだ。 OCLの簡単な歴史は分かるが、どのような言語と思想をベースに設計されたかは正確なことは忘れてしまった。また、Smalltalkにcollect, injectなどがあったことは当時は知らなかった。
ここ数年は、collectを使うようになった。 Rubyには、injectに対応したものとしてfoldr(fold-right)とfoldl(fold-left)がないからだ。(foldl,foldrにはaccumulatorはない。また、injectに対応するOCLのコレクション操作はiterateだ。)
ちなみに、OCLについて少しgoogleで検索していると、「分析・設計ツールとしてのSmalltalk」という記事が見つかった。この記事はWebArchiveで調べてみると2000年にはすでにあったもののようだ。HTTPヘッダでは更新日時は1999年で、ソースからはWin95上で作られたことが推測できるので大体それくらいなのだろう。Rubyでも同様の柔軟さで似たことはできるだろう。ついでにDSLを意識しても良いだろう。こういうことの詳細や実践的なことは、「Ruby プログラミング + モデリングでより楽しくなろう」などでその手の専門の人に聞けばよいかもしれない。
また、過去に関数型言語をドメインモデリングの一部の記述に用いたことがある。言語作成の手間を省くためではあったものの、DSLっぽいものを定義しておけば意外と使える。そのような経験から思うには、モデリングには関数型言語っぽい記述やコレクションの操作が適していると考える。そして、このため、SmalltalkやRubyをモデリングに適用し易いのかもしれない。
posted by ttate at 00:59| ☁| Comment(0) | TrackBack(0) | プログラム言語 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。