SuperAPI AI 工具集

fp-go-pipe-flow

编程与开发

查看项目

更新于 10-15 22:16

技能介绍

用途:指导编写、重构和审查使用 fp-go v2 的 Go 代码,核心是 Pipe(数据优先组合)与 Flow(函数优先组合)。所有导入必须来自 github.com/IBM/fp-go/v2,不得使用 v1 路径。

主要能力与约定:PipeN 将初始值依次穿过 N 个函数,FlowN 将 N 个函数组合为可复用函数;有起始值时用 Pipe,构建可复用函数时用 Flow。优先用函数而非包级变量包装管道结果,var 仅用于 lens 和预绑定组合子。提倡 point-free 风格,用 P.Predicate[A] 与 E.Endomorphism[A] 作为返回类型,数值比较与运算优先用 N.MoreThan、N.LessThan、N.Mul、N.Add 等组合子。过滤并提取字段时用 A.FilterMap 配合 O.FromPredicate 单次遍历完成。仅在计算确实需要环境(context、配置、DB、日志)时使用 Reader monad;纯转换直接用 Flow/Pipe。do-notation 用 R.Do、R.Bind、R.ApS、R.Let、R.LetTo 组装记录,Bind 用于依赖累积状态的顺序步骤,ApS 用于独立字段,Let 用于纯派生字段。结构体字段访问应通过 lens 或专用 helper,避免管道内联函数;可将 lens.Get 赋给命名变量。

使用方式:对未在资料中给出的组合子,应通过 fp-go MCP 服务器的 search_examples / get_example 工具查询,而非猜测签名;写完代码后运行 go build ./... 与 go vet ./...,修复类型参数或参数顺序错误。为每个非平凡管道或 flow 生成 _test.go,纯函数用具体值断言,reader 管道传入真实轻量环境结构体,IOResult/ReaderIOResult 调用最内层 IO thunk 与 result.Of 比较,多输入输出用表驱动测试,不要 mock 环境。

限制:资料未提供该技能的安装方式、收费、平台支持或性能效果等信息;fp-go 在训练数据中出现频率低,签名容易记错,需依赖工具查询与编译校验。