ssf*_*frr 6 arguments variadic-functions apl dyalog
我正在阅读 Hui 和 Kromberg 最近的“自 1978 年以来的 APL”,在?(模板)的讨论中,他们给出了以下示例:
{??}?5?'abcde'
abc abcd abcde bcde cde
Run Code Online (Sandbox Code Playgroud)
为什么{??}需要的只是??我对 APL 还是很陌生,但我天真地认为,一般来说{f?}应该等同于fmonadically 调用。
根据经验,我可以看到情况并非如此:
??5?'abcde'
DOMAIN ERROR
??5?'abcde'
?
Run Code Online (Sandbox Code Playgroud)
但我不明白为什么。
你是绝对正确的,{??}相当于单次?调用时,但是根据文档:
f使用向量 left 参数二元调用,指示每个轴的填充元素数量和在哪一边;正值意味着填充在数组值之前,负值意味着填充在数组值之后。
我们可以通过让函数同时返回两个参数的外壳来说明这一点:
{?? ?}?5?'abcde'
?????????????????????????????????????????????????????
?????????????????????????????????????????????????????
??2? abc???1? abcd???0?abcde???¯1?bcde ???¯2?cde ??
?????????????????????????????????????????????????????
?????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
此左参数旨在满足作为左参数的要求,?因此可以轻松删除添加的填充:
{????}?5?'abcde'
?????????????????????????
?abc?abcd?abcde?bcde?cde?
?????????????????????????
Run Code Online (Sandbox Code Playgroud)
如果你想要一个默认操作数而不是{??}then 你可以使用???(它等价于{????}and 因此{??})或者,在版本 18.0 中,???(它等价于{????}and 因此{??})。
| 归档时间: |
|
| 查看次数: |
122 次 |
| 最近记录: |