Многострочные входы в RIDE (APL)? - PullRequest
1 голос
/ 06 марта 2020

I sh для ввода многострочного массива следующим образом:

ast ← ('∘'
           ('a' ('p'))
           ('b' 
             ('q' ('v'))
             ('r'))
           ('c' 
             ('s' ('w' 'x'))
             ('t' ('y' 'z'))))

Это правильно с точки зрения паразитирования, но я не могу скопировать и вставить его в интерфейс Dyalog APL RIDE. Я искал вокруг и нашел два ответа, оба из которых мне не помогли:

Итак, , как один тип многострочных данных в APL ?

Ответы [ 2 ]

2 голосов
/ 06 марта 2020

В дополнение к отличный ответ Ричарда Парка , следует отметить, что Dyalog работает над многострочными массивами по двум направлениям:

Разработка новой многострочной записи в массиве

  • Самым последним изданием было , представленное в 2018 году

  • ⎕SE.Link.Serialise может создавать многострочную запись из любого любого массива

  • ⎕SE.Link.Deserialise вернет массив, указанный его массивом обозначений аргументов

Многострочный сеанс ввода

  • Версия 18.0 (выйдет летом 2020 года) включает экспериментальную поддержку многострочных сеансов. Он должен быть включен с параметром конфигурации.

  • Он обнаружит незавершенные функции (например, MyFn←{ и 4{) и структуры управления (например, :If myVar>5 и :Class MyCl) но не обозначение массива.

  • 18.0 также будет содержать инструмент ⎕SE.Link.Array, который позволяет переносить многострочную запись массива в dfn:

{
 [1 2 3
  4 5 6]
}⎕SE.Link.Array⍬
2 голосов
/ 06 марта 2020

Сессия в настоящее время не поддерживает многострочные массивы.

На данный момент вам по-прежнему необходимо по большей части программно создавать многомерные массивы (хотя вы можете, например, создать редактируемую текстовую матрицу, заполнить ее «числами» и затем использовать ⍎¨)

cmat←⍪''
)ed cmat

вставьте

0123
2314
1244

, затем исправьте (нажмите Es c) и используйте

      ⍎¨cmat

. Для меня я нахожу Shift-Enter и Ctrl- Enter - мои лучшие друзья большую часть времени

Похоже, вы пытаетесь представить дерево как вложенный массив (подробнее об этом смотрите в dfns tview и tnest и других материалах дерева). Таким образом, не похоже, что вам действительно нужна многострочная (все массивы в APL гиперточны angular)?

ast←('∘'('a' ('p'))('b'('q'('v'))('r'))('c'('s' ('w' 'x'))('t' ('y' 'z'))))

Традиционные функции (tradfns) можно легко скопировать и вставить, если они используют формат ввода сеанса:

     ∇ r ← larg Fun rarg
     r ← larg, rarg
     ∇

Можно вставлять многострочные dfns. Сначала используйте пользовательскую команду ]dinput.

      ]dinput

, затем вставьте

      dfn ← {
   ⍺, ⍵
}

(кстати, относительно из предыдущего комментария, вы можете вставить многострочный dfn и добавить с , но вы должны поместить в последнюю строку [n] и нажать Enter, чтобы исправить эту функцию. Пользовательская команда ]dinput немного проще)

...