作者通过[Exercism]每月学习至少一种新编程语言,偶然接触到 APL 并深入学习。学习过程包括观看教程视频、安装 Dyalog APL 及相关编辑器、实际编写代码等。APL 以少量 glyphs 表示操作,如“⌈/∨⌊/”分别代表“maximum”“reduce”“GCD”“minimum”,其解决方案简洁紧凑,如求数组最大最小数的 GCD 只需 5 个 glyphs。与 R 对比,R 有丰富的函数库,如{dplyr}有 470 + 个函数,但 APL 更直接地使用原子构造。在解决 leetcode 问题时,APL 解决方案明确展示了两个“reduce”操作,R 可通过Reduce()
函数实现类似效果,且 R 能隐藏/抽象维度循环,直接处理多维对象,这使其成为“array language”。作者还学习了 APL 中的其他操作符,如“Grade Down”(⍒)、“First”(⊃)等,并将其应用于更复杂的问题,如找出具有最大行和的行索引及生成小于某数的质数等。作者认为理解 APL 运算符的组合方式对功能编程很有启发,还打算尝试 BQN,欢迎大家交流讨论。最后附上了开发环境信息及相关文章链接。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。