Существует ли идиома APL для получения вектора всех буквенных символов?
Я знаю, что вы можете получить вектор символов всех чисел с ∊⍕¨⍳10
, но есть ли независимая от платформы идиома для получения вектора всех алфавитных символов, кроме ввода вручную 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
? Я знаю, что я могу сделать ⎕AV[(⍳26)+(⎕AV⍳'a')-1]
чтобы получить все строчные буквы (и заглавные, изменив 'a'
в 'A'
) в Dyalog APL, но я полагаю, системная переменная ⎕AV
недоступно в других средах.
3 ответа
На самом деле, нет.
В Dyalog APL я обычно использую ⎕A
для заглавных букв и ⎕UCS 96+⍳26
для строчных букв. (А также ⎕A,⎕UCS 96+⍳26
для всего алфавита.)
⎕AV
обычно присутствует, но его содержимое не является стандартным. (Например, NARS2000 ⎕AV
отличается от Dyalog.) Кстати, в Dyalog ⎕AV
считается устаревшим в пользу ⎕UCS
, Любой APL, который реализует ⎕UCS
будет делать то же самое, потому что Unicode является установленным стандартом.
Если вам нужен гарантированный, независимый от реализации, читаемый способ определения алфавита, я бы порекомендовал просто хранить abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
в вашем рабочем пространстве.
Однако я бы не советовал пытаться писать независимый от реализации код APL для начала. Диалекты APL довольно расходятся, так что это определенно нетривиально (если вообще возможно для сложного кода), и его будет трудно поддерживать.
Хотя Quad имена (⎕xxx
) обычно нечувствительны к регистру, MicroAPL различает ⎕A
а также ⎕a
, так ⎕a,⎕A
дает 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
,
Да, в последних версиях * пишите ⎕A,819⌶⎕A
, за ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
,
* Последние сборки 14.1 и все версии 15.0 и выше.