我正在Dyalog APL Win10 中嘗試以下相互遞回示例:
even ← { (odd ?-1) ∨ ?=0 }
odd ← { (even ?-1) ∧ ?>0 }
even 7
WS FULL
看起來∨并且∧不會在達到定義的狀態時停止評估。WS FULL 表明遞回確實有效,但沒有正確終止。
如何在APL中進行相互遞回?
附注。我對 APL 很陌生,不知道?函式的正確語法。無論如何,如果可能的話,我更喜歡更“實用”的風格。
uj5u.com熱心網友回復:
由于∧和∨是正常功能,并且不會短路,因此您必須使用“守衛”:
even ← {?=0:1 ? odd ?-1}
odd ← {?>0:even ?-1 ? 0}
even 7
0
或者,您可以定義自己的短路運算子。您可以在 APLcart 上找到現成的定義:
OR ← {?? ?:1 ? ?? ?}
AND ← {?? ?:?? ? ? 0}
even ← {=°0 OR (odd -°1) ?}
odd ← {>°0 AND (even -°1) ?}
even 7
0
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/344890.html
