В tryapl.org Primer, когда вы выбираете глиф Del (∇), он показывает пример Double-Del (∇∇), где доп (насколько я понимаю, определяемый пользователем оператор) может ссылаться на себя в рекурсивная мода:
Double-Del Syntax: dop self-reference
pow←{ ⍝ power operator: apply ⍵⍵ times
⍵⍵=0:⍵ ⍝ ⍵⍵ is 0: finished
⍺⍺ ∇∇(⍵⍵-1)⍺⍺ ⍵ ⍝ otherwise: recurse
}
Может ли кто-нибудь предоставить мне несколько примеров использования этого конкретного допа, чтобы я мог увидеть, как его использовать? Я вижу, что в теле этого допа не используется ни один ⍺
, только ⍺⍺
; делает ли это монадической доп?
Я пробовал несколько разных способов использовать этот оператор в выражении после его определения и не могу получить ничего, кроме ошибок или случаев, когда тело/текст dop находится в массиве как текст, наряду с тем, что я пытался перейти на него.
incr←{1+⍵} ⍝ define an increment function
(incr pow 3) 5 ⍝ apply it 3 times to 5
8
⍺
У оператора есть ⍵⍵
, что само по себе делает его диадическим оператором. Отсутствие единственного ⍺
означает, что при задании двух требуемых операндов получается монадическая функция.
Когда оператор принимает операнд массива (в отличие от функции), смежный с аргументом, крайне важно отделить операнд от аргумента. Это можно сделать любым из трех способов:
add3←incr pow 3 add3 5
(incr pow 3) 5
⊢
): incr pow 3 ⊢ 5
В противном случае предполагаемый операнд и аргумент будут объединены в один массив, который затем станет операндом, оставив производную функцию без аргумента, к которому она может быть применена:
incr pow (3 5)
Таким образом, результатом является производная функция; источник текста, который вы видите, сообщил.