Skip to content

llong8/fp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

@about-me/fp

轻量级 TypeScript 函数式编程工具库

npm version TypeScript License: MIT Bundle Size Tests

提供 pipecomposecurry 等 11 个核心函数式编程工具

快速开始 · API 参考 · 完整文档 · LLMS-txt


安装

npm install @about-me/fp
#
pnpm add @about-me/fp

快速开始

import { pipe, curry, tap, debounce } from '@about-me/fp'

// 1. 使用 pipe 创建数据处理管道
const result = pipe(
  [1, 2, 3, 4, 5],
  arr => arr.map(x => x * 2),
  tap(x => console.log('Doubled:', x)),  // 调试不影响数据流
  arr => arr.filter(x => x > 5),
  arr => arr.reduce((sum, x) => sum + x, 0)
)
// 输出: 24

// 2. 使用 curry 创建专用函数
const filterBy = curry((prop, value, arr) =>
  arr.filter(item => item[prop] === value)
)

const users = [
  { name: 'Alice', role: 'admin' },
  { name: 'Bob', role: 'user' }
]

const getAdmins = filterBy('role')('admin')
getAdmins(users)  // [{ name: 'Alice', role: 'admin' }]

// 3. 使用 debounce 优化搜索
const searchAPI = debounce((query: string) => {
  fetch(`/api/search?q=${query}`)
}, 300)

input.addEventListener('input', e => searchAPI(e.target.value))
// 输入停止 300ms 后才发送请求

文档

完整的 API 参考文档请访问 GitHub 文档

API 参考

核心组合函数

函数 描述 使用场景
pipe 从左到右组合函数,支持同步和异步 数据转换管道、流程编排、异步操作
compose 从右到左组合函数 数学风格组合、高阶函数

函数转换

函数 描述 使用场景
curry 柯里化 创建专用函数、参数复用
partial 部分应用 固定部分参数

副作用和调试

函数 描述 使用场景
tap 执行副作用但不改变值,支持同步和异步 调试、日志、监控、异步日志

基础工具

函数 描述 使用场景
identity 返回输入值本身 过滤假值、默认函数、类型保护
constant 返回常量函数 默认值、数组填充、事件处理

性能优化

函数 描述 使用场景
memoize 缓存函数结果 昂贵计算、递归优化
debounce 防抖 搜索输入、自动保存
throttle 节流 滚动事件、鼠标移动

LLM 辅助编程文档

以下是 txt 格式的文档文件列表,包括 llms.txtllms-full.txt。这些文件供大型语言模型(LLM)访问本库的编程文档及 API。

文件类型 链接 说明
llms.txt https://github.com/llong8/fp/blob/main/llms/llms.txt 索引文件,包含 API 列表和简短描述
llms-full.txt https://github.com/llong8/fp/blob/main/llms/llms-full.txt 完整文档,包含详细说明和代码示例

使用方式

在 AI 编程助手(Claude、Copilot、Cursor 等)中引用文档:

@llms/llms.txt

请帮我使用 `@about-me/fp` 创建一个数据处理管道:
1. 过滤活跃用户
2. 按评分排序
3. 添加元数据
4. 在每一步记录日志

llms.txt 和 llms-full.txt 的区别

  • llms.txt:索引文件,包含 API 链接和简要描述,LLM 需点击链接获取详细内容
  • llms-full.txt:完整文档,所有内容在单个文件中,无需额外访问

注意:llms-full.txt 文件较大,可能超出部分 LLM 的上下文窗口限制。


About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors