1
以下PureScript代碼:爲什麼PureScript編譯器產生大量的 「| 0」
fibs 0 = 1
fibs 1 = 1
fibs n = fibs (n-1) + fibs (n-2)
編譯爲以下JavaScript:
var fibs = function (v) {
if (v === 0) {
return 1;
};
if (v === 1) {
return 1;
};
return fibs(v - 1 | 0) + fibs(v - 2 | 0) | 0;
};
所有非常有意義,除了「| 0「似乎沒有必要。這是一種優化嗎?或者使其對未定義或NaN強健?
有趣!你能否給出一個例子,說明這種運行時行爲在捕獲一個在編譯時不會被類型系統捕獲到的錯誤時是可取的? – user3048859