← ClaudeAtlas

dolphindb-functional-programminglisted

在编写、优化、解释 DolphinDB / DolphinScript 代码时应用此函数式编程规则集。 适用于高阶函数、函数模式、函数运算符、链式表达、eachAt/at 映射调用、lambda、部分应用、动态函数调用、模块与函数视图相关任务。 当任务需要以函数为主要组织单位处理数据、组合函数或组织函数接口时使用。
dolphindb/DolphinX_Skill · ★ 8 · AI & Automation · score 57
Install: claude install-skill dolphindb/DolphinX_Skill
# DolphinDB 函数式编程 ## 使用流程 按以下流程使用本 skill: 1. 判断任务是否属于 DolphinDB / DolphinScript 函数式编程;若输入不是 DolphinDB 代码或相关设计问题,回复“请提供 DolphinDB 脚本或函数式编程设计上下文。” 2. 明确函数类别、输入对象、输出形态和调用位置。 3. 根据任务类型选择参考文件: - 场景 01:函数作用在数据上 - 场景 02:函数作用在函数上 - 场景 03:函数作用在函数集合或接口上 4. 按场景文件选择高阶函数、函数模式、部分应用、动态调用、模块或函数视图。 5. 代码完成后,检查输出长度、对象维度、参数绑定顺序和副作用位置。 ## 总规则 ### 规则 01:确定函数类别与默认输出形态 区分当前函数是标量函数、聚合函数还是向量函数,再判断它作用于向量、表、矩阵、元组、字典后的默认行为。`byRow`、`byColumn`、`each`、函数模式和其他承载入口,都应基于函数类别与输出形态选择。 - 标量函数:输出只依赖当前位置,作用到复杂对象时通常逐元素展开。 - 聚合函数:输入是一批数据,输出一个归约结果;作用到表和矩阵时,常见默认行为是按列聚合。 - 向量函数:输入和输出都保留序列结构,位置关系会影响结果,例如 `prev`、`cumsum`、`mavg`。 ### 规则 02:优先采用内置入口、高阶函数和函数模式 内置函数通常已经定义对象级行为。自定义函数进入表、矩阵、窗口或分组对象时,应显式指定高阶函数或函数模式。编写自定义循环前,应检查是否已有现成入口。向量级自定义函数进入二维对象时,应明确采用按列还是按行应用。 ### 规则 03:用链式表达呈现调用顺序 多步处理优先使用从左到右的链式表达,使调用顺序、书写顺序和阅读顺序一致。高阶函数嵌套过深时,优先改用函数模式,将高阶函数调用转为链式入口。 常用映射关系如下: | 高阶函数 | 函数模式 | 作用 | | --- | --- | --- | | `each` | `:E` | 逐项遍历 | | `loop` | `:U` | 逐项遍历并保留元组结果 | | `eachLeft` | `:L` | 遍历左侧元素 | | `eachRight` | `:R` | 遍历右侧元素 | | `cross` | `:C` | 遍历左右组合 | | `eachPre` | `:P` | 遍历当前元素和前一个元素 | | `eachPost` | `:O` | 遍历当前元素和后一个元素 | | `byRow` | `:H` | 按行处理 | | `byColumn` | `:V` | 按列处理 | | `accumulate` | `:A` | 输出每一步结果 | | `reduce` | `:T` | 输出最终结果 | | `groupby` | `:G` | 分组聚合计算 | | `contextby` | `:X` | 分组向量计算 | ### 规则 04:默认保持无副作用函数风格 自定义函数参数默认不可修改。只有需要状态推进或原地修改时,才显式使用 `mutable`。���及状态修改时,应说明状态对象的位置、生命周期,以及不能改写为无状态表达的原因。 ### 规则 05:明确输入拆分方式与结果合并方式 选择 `each`、`byRow`、`byColumn`、`reduce`、`accumulate`、`groupby`、`context