Apl语言各符号含义与可能的中文化(一)
尝试对 APL 的语法进行中文化。挑选了几个符号与例程进行中文表达,之后综合考虑用何种语法比较可行。
三个 APL 符号
⍳
APL 语言中,符号 ⍳ 为希腊字母,音 iota,Dyalog开发环境中,⍳ 的快捷键是 `i,应该是 iota 的开头。
当仅有一个参数时用于创建自然数列。⍳3 在 APL 最初设计 中,是 0 开头,长度为 3 的数列,即从 0 到 2 的数列。而在 APL 语言至今的不同实现中,并不一定默认以0开头,如在 Dyalog 18.0 中,默认为 1 开头的数列。这是使用交流的一个潜在问题。那么是否可以用更明确的表达规避?比如直接用“0到2”或“1到3”。
当有左右两个参数时,符号 ⍳ 获取后者在前者中的位置,比如 ‘abcd’ ⍳ ‘ac’ 返回 1 3,对应中文“’ac’在’abcd’的位置”。
⍴
符号 ⍴ 音 rho,快捷键 `r,当有两个参数时,为“塑形”,即将后者改为前者指定的形状。比如 ⍳6 为 1到6,那么 “3 2 ⍴ ⍳6”返回如下矩阵:
1 2
3 4
5 6
如果用中文表达:1到6 塑形(为) 3 2
当仅有一个参数时,为取该参数的“形状”,如果是数列即一维矩阵,则取其长度,比如 ⍴⍳6 返回 6,对应中文“1到6的形状”;如果是矩阵,则返回行列数,如上面的矩阵 “⍴ 3 2 ⍴ ⍳6” 返回 3 2,对应中文“1到6塑形为 3 2的形状。
↓
下箭头 ↓ 快捷键 `u。当有两个参数时,将后者开头的前者个元素删除,如 2↓⍳6 返回 3到6,对应中文表达“1到6删前2”。
一个参数时,为拆分,如上面矩阵“↓3 2⍴⍳6”返回包含下面三项的列:1 2, 3 4, 5 6 。对应中文“1到6塑形为3 2拆开 split。
中文语法
APL 语言的符号在单个和两个参数时基本有两种语义,有些比较相关,如三个符号中的 ⍴,都与形状有关。但 ⍳ 和 ↓ 的两种语义似乎关联不大(?)。前面这种情况还勉强可用单一汉字“形”对应 ⍴,但后面这种情况下似乎很难选取汉字与每个符号进行一一对应。
如果使用不同字词表达同一符号的不同语义,但仍然保留APL语法,即:
- 从右到左的阅读顺序
- 单参数时,符号在左
- 双参数时,符号在中
那么一种可能的对应中文语法设计如下(暂用两字词语表达,具体用词待商榷,暂以空格分词):
⍳6
数列6
'abcd' ⍳ 'ac'
'abcd' 位置 'ac'
⍴⍳6
形状 数列6
3 2 ⍴ ⍳6
3 2 塑形 数列6
↓3 2⍴⍳6
拆分 3 2 塑形 数列6
2↓⍳6
2 去头 数列6
看起来似乎还可以。是否有更接近中文自然语言语法的设计、同时保留 APL 语法的优势比如可以一个方向阅读理解呢?
两含义不一定相同,但不同符号的语义也许相关,可用同汉字表达
(3 2 ⍴ ⍳6) ⍳ 5 6 返回 3。