Используйте рекурсивный доп в APL

В 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 находится в массиве как текст, наряду с тем, что я пытался перейти на него.

Учебная записка [Medium] Leetcode#22 Generate Parentheses
Учебная записка [Medium] Leetcode#22 Generate Parentheses
На этот раз мы собираемся решить еще одну классическую проблему, связанную с парными скобками, так называемую генерацию скобок.
1
0
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Пример использования

      incr←{1+⍵}      ⍝ define an increment function
      (incr pow 3) 5  ⍝ apply it 3 times to 5
8

Отсутствие сингла

У оператора есть ⍵⍵, что само по себе делает его диадическим оператором. Отсутствие единственного означает, что при задании двух требуемых операндов получается монадическая функция.

Поиск неисправностей

Когда оператор принимает операнд массива (в отличие от функции), смежный с аргументом, крайне важно отделить операнд от аргумента. Это можно сделать любым из трех способов:

  1. Назовите производную функцию, а затем примените ее:
    add3←incr pow 3
    add3 5
  2. Заключите производную функцию в скобки:
    (incr pow 3) 5
  3. Отделить операнд от аргумента с помощью функции (часто используется тождественная функция ):
    incr pow 3 ⊢ 5

В противном случае предполагаемый операнд и аргумент будут объединены в один массив, который затем станет операндом, оставив производную функцию без аргумента, к которому она может быть применена:

incr pow (3 5)

Таким образом, результатом является производная функция; источник текста, который вы видите, сообщил.

Другие вопросы по теме