APL中带有标量和向量的字符串长度

Use*_*407 5 apl

几周前我刚开始学习APL,所以这听起来像是一个新手问题.

B是一个字符串,这在APL而言可以是scalor或载体.如果它是标量,则?B返回null而不是我想要的字符串长度.

B?'QR'
?B ? returns 2

B?'Q'
?B ? returns null
Run Code Online (Sandbox Code Playgroud)

我发现了一种方法:

?1?'X',B ? concatenating X and then removing it returns a value of 1
Run Code Online (Sandbox Code Playgroud)

这可行,但它似乎有点蠢,所以我想知道是否有更标准的方法来找到字符串长度.

它只是我还是看起来有点不一致?我读过的教程说将标量看作类似于向量代数的方式.但是如何将标量连接到标量会产生向量,但是从向量中删除标量永远不会产生标量?

我真的很享受APL,所以这个问题并不是批评.我的问题是,找到字符串长度的最佳方法是什么?并且,如果任何人都可以对这种看似不一致的事情略微说清楚,那将是值得赞赏的.

MBa*_*aas 5

连接X并将其删除的原因是,连接产生一个向量.删除X 1?然后将其作为向量,作为一个空向量准确.矢量长度可以用measured测量.这也是CrazyMetal的解决方案所做的:monadic ,将其参数(任何维度的标量或数组)转换为向量.并且测量它的rho为您提供了您正在寻找的答案:找到字符串长度标准方法.

?,B
Run Code Online (Sandbox Code Playgroud)