2013-11-21 36 views
1

Rascal覺得既功能又勢在必行。它支持作業。但它也被宣稱是純粹的。所以我猜想像任務這樣的功能是模擬的。那麼什麼是Rascal的必要模型,通過monads的Haskell方式還是通過唯一性的Clean方法?Rascal的命令模式是什麼?

回答

1

從某種意義上說,Rascal是純粹的,它的數據實例是不可變的,並且意味着所有東西(函數參數傳遞,賦值,調用Java方法)都是按值傳遞的。沒有別名可能(*)。

即使使用全局變量或可捕獲堆棧位置的可比較閉包,所有賦值都是按值賦值,但它們是實際賦值。 I.o.w.沒有monad,沒有唯一性打字,只是簡單而直接的副作用,但沒有別名,也沒有突變。

對Rascal中的Java代碼「安全」產生副作用的原因是發送/接收數據總是通過(反)序列化一個不可變的值,也就是說,您實際上無法通過Java將有狀態數據引用到Rascal中除非你開始編碼指針intloc :-)

(*)你可以使用閉包創建一種形式的別名,