名前空間

Javaではfieldとmethod(とclass)の名前空間が区別されている*1が、Schemeでは値と関数の名前空間が区別されていない。適当に擦り合わせておいた方が良いだろう。

  • (class 'classpath)でJavaのクラスを得る。
  • (object 'field)でobject.fieldを得る。

問題はobject.method(args...)を得る方法で、

  1. (object 'method args...)
  2. (object 'method (args...))

などの構文が考えられる。
1.はSchemeらしい構文なのだけど引数無しの場合が表現しずらいのが難点。(object 'method ())だと一貫性がないし、一貫性を持たせた(object 'method . ())=(object 'method)だと(object 'field)と区別が出来ない。整合性を保つためにobject.fieldを得る方法を(object . 'field)と変えるのも無理がある。
2.のように特殊構文として扱うのはあまり好みでない。もちろん、毎回`,で操作するのは論外。

*1:まあ、接頭/接尾辞で区別するというのも有りといえば有りなんだけど。