2008年7月7日 星期一

Forth and prototype

=== 2008/07/07 ===

思索如何在 forth 中引進物件。引進的方式必須和 eiffel 有很好的配合,又必須適合 dynamic language。一種方法是在 forth 使用 prototype,類似 Javascript 。

我希望觀念儘量和 Eiffel 接近。Forth 可以使用 Eiffel 的物件做為 prototype,再增加自己的資料。

此外,允許使用 x.y 的呼叫方式。此一方式必須符合 Eiffel 的各種規則。如果要對物件堆疊上的物件做處理,必須先給物件一個名字。以下是嘗試:

reference circle
create-circle
circle object!
circle.radius .

reference box
create-box
box object!
box.width .

reference circular-box
prototype circle
prototype box

嗯,似乎不容易以 prototype 方式建造這 circular-box 物件。
因此,解決的方法似乎還必須給予 reference 型別如下:

reference circular-box \ 無型別的 reference
prototype circle \ 具型別 circle
prototype box \ 具型別 box
create-method make-circular-box
origin3d 1.0 make-circle origin3d 1.0 1.0 1.0 make-box ;

create circular-box.make-circular-box

circle-box.radius .
circle-box.width .

如此建造出來的物件沒有 eiffel merge features 的能力。但似乎可用了。

在實現上,不急著做 prototype 。可以先做 x.y 這樣的呼叫。由 Eiffel 建立物件的 prototype。