2,761
次編輯
Tankianting(討論 | 貢獻) |
Tankianting(討論 | 貢獻) |
||
(未顯示同一使用者於中間所作的 6 次修訂) | |||
行 1: | 行 1: | ||
{{Nav|程式語言、邏輯學}} | {{Nav|程式語言、邏輯學}} | ||
==coding:style== | |||
<pre> | |||
Type Felix struct{ | |||
Str name, | |||
Int age}; | |||
Int a = 2 + 2; | |||
(Int Int -> Int) add = lmd(x, y) { | |||
if (x == 0){ | |||
return y; | |||
}else{ | |||
return x + y; | |||
} | |||
}; | |||
</pre> | |||
bool a = (20 == (lmd(int x, int y){return x * y;}(12, 6)) + 2); | |||
Felix (Str name, Int age) | |||
Int a = 2 + 2; | |||
add = l int x ,int y | |||
==迴圈== | ==迴圈== | ||
行 72: | 行 97: | ||
==對字串的思考== | ==對字串的思考== | ||
字串是什麼? →其實可以表示為很大的數字。 | |||
所以,要用鏈表表示也是可行的。 | |||
==閉包== | |||
<pre> | |||
(x)=>{foo(x, free_vars)} | (x)=>{foo(x, free_vars)} | ||
</pre> | |||
轉換 | |||
<pre> | |||
ThunkAnony8964 thunkanony8964(TypeOfX x ,TypeFreeVars env){ | ThunkAnony8964 thunkanony8964(TypeOfX x ,TypeFreeVars env){ | ||
foo(x, env[free_vars]); | foo(x, env[free_vars]); | ||
行 102: | 行 125: | ||
anony8964.thunk = *thunkanony8964; | anony8964.thunk = *thunkanony8964; | ||
</pre> | |||
執行函數 | |||
<pre> | |||
lambda(x){body}(n); | lambda(x){body}(n); | ||
</pre> | |||
改為 | 改為 | ||
<pre> | |||
anony9864.thunk(n, anony8964.env); | anony9864.thunk(n, anony8964.env); | ||
</pre> | |||
== 如何代碼刪除不須存在的變數或函數? == | == 如何代碼刪除不須存在的變數或函數? == | ||
* | * 通常來說,下列兩個條件均滿足下,只要變(函)數不出現在作用域的任何獨立表達式(須化簡)和定義式的右手邊(須化簡),則可以刪掉: | ||
*# 不可變 | |||
*# 不為外部引用 | |||
[[category:資訊]] | [[category:資訊]] |