2008年4月16日

Erlang VS. REBOL, Part I

* 語言種類
Erlang屬於Pure Functional Language。REBOL屬於Impure Functional Language。Erlang的許多設計考量,是為了方便進行concurrency。REBOL的設計則最適合進行Meta-Programming。

* 註解(Comment)
Erlang使用「%」,REBOL使用「;」,當作單行註解記號。

* 算術表示式 2 + 3 * 4
Erlang: 2 + 3 * 4 (寫法比較直覺)
REBOL: 2 + (3 * 4) (一定要寫括號,不然一律由左至右計算)

* Integer Overflow?
Erlang使用任意長度的整數,來進行算術運算,不會發生overflow。
REBOL使用64位元長度記錄整數,有可能發生overflow。

Erlang:
> 12345678 * 987654321 * 112233445566778899 * 998877665544332211.
(A very huge number. No problem here)

REBOL:
>> 12345678 * 987654321 * 112233445566778899 * 998877665544332211
** Math error: Math or number overflow

* 不同基底的整數
Erlang可以使用任何基底,例如:
16#cafebabe (表示16進位)
17#cafebabe (表示17進位)

REBOL做不到這一點。

* 變數名稱
Erlang的變數必須頭文字大寫,且只能使用英文和數字。REBOL不區分大小寫,可以使用各國文字。

* 變數範疇
Erlang的變數範疇(scope)只有在clause內。不同的clause之間不可能共享變數。REBOL沒有此限制。

* 變數繫結
Erlang的變數只能被繫結(bound)一次(可以讓除錯變得很容易)。REBOL沒有此限制。

沒有留言: