連鎖性言語/キーワードパラメータ

Common Lisp や Smalltalk をはじめ、多くの言語は、呼び出し側での名前付きパラメータをサポートしています。

(send-email
  :from "jack@aol.com"
  :to (list "jill@aol.com")
  :subject "Hello there"
  :body body)

Factor でこれに最も近いものを実現するには、タプルを定義して、タプルのスロットを設定し、このタプルをほかのワードに渡します。Factor ではこの方法は非常に都合がよいのですが、それはタプルスロットのセッターがタプルをスタックに置くので、スタックを操作しなくてもセッターを次々にチェインさせることができるからです。

<email>
    "jack@aol.com" >>from
    { "jill@aol.com" } >>to
    "Hello there" >>subject
    body >>body
send-email

この語法を使ううえで、付加的な言語機能は一切必要ありません。また、セッターの呼び出しを新しいワードとしてまとめることができるので、柔軟な使い方が可能です。実際、email オブジェクトをすぐに送信せずに、ワード間で受け渡しすることもできます。

This revision created on Fri, 2 Jan 2009 19:55:35 by slava