列阵第七
赋曰
单骑虽捷,不成行伍;众值既集,乃列成阵。列之为器也,或空营而无卒,曰 罄;或前锋领首、余众随后,曰 缀。一首一尾,尾复为列;寸寸相衔,可短可长。观其本,不过二形;推其用,则簿册、词章、树叶、令牌,皆可载焉。
欲治其列,法亦因形。逢罄而止,是为基;逢缀而取头,复治其尾,是为递。基若堤岸,止水无涯;递若驿传,逐站而前。无基则奔流不返,无递则只见一端。两者相济,虽千军万数,终可一一阅之。
解章
标准之库有多态列,以二构造器成之:「罄」 者,空列也;「缀」于「头」于「尾」 者,置一素于旧列之首也。故二、三、五之列,可曰:
「缀」于「二」于(「缀」于「三」于(「缀」于「五」于「罄」))
其类为 「列」于「整数」。「列」 本类型构造器也;受素之类,乃成一具体列类。故整数列与字符串列,类各有别,不得相杂。
欲求列中诸数之和,循其二形而递之:
「列求和」乃化(「列」于「整数」)而「整数」也。
「列求和」者会「数列」而
鉴「数列」而
有「罄」则「零」
或有(「缀」于「头」于「尾」)则
「加」于「头」于(「列求和」于「尾」)也。
全篇曰:
寻观「标准库」之书。
「列求和」乃化(「列」于「整数」)而「整数」也。
「列求和」者会「数列」而
鉴「数列」而
有「罄」则「零」
或有(「缀」于「头」于「尾」)则
「加」于「头」于(「列求和」于「尾」)也。
「数列」乃「列」于「整数」也。
「数列」者「缀」于「二」于
(「缀」于「三」于(「缀」于「五」于「罄」))也。
「打印行」于(「整数表示」于(「列求和」于「数列」))。
其出十。同例见列阵。豫。
循环之所在
命令之式,常改计数而为循环;函数之式,多循数据而递归。「列求和」 每治一头,复以较短之尾自召,至罄而止。其间无潜藏之序数,亦无越尾之患。
标准库已有 「长度」、「态射」、「滤」、「从左折叠」、「从右折叠」 诸列术。然初学者宜亲书一次结构递归;盖诸高阶术,正自反复之递归骨架提炼而来。不识其本,则虽能调用,未明其所以然也。
试策
仿 「列求和」 而作 「列长度」:罄则零,缀则一加尾长。复作 「列乘积」:罄则一,缀则头乘尾积。比二术之文,察其同骨而异者安在。