跳转到主要内容

一个标准模块。受Haskell的Prelude启发。

项目描述

目录

  1. 序言
  2. Nalude
  3. 函数结构
    1. 折叠和遍历
    2. 列表
    3. 杂项
    4. 字符串
    5. 特殊
    6. 元组
    7. 压缩和解压缩
    8. 额外
  4. 开始使用
    1. 安装
  5. 结语
    1. 历史
      1. 版本 0.3.0
      2. 版本 0.2.0
      3. 版本 0.1.0

序言

我喜欢Haskell,也希望Haskell的一些Prelude函数可以在Python中使用。

希望您使用nalude编码愉快。

Nalude

Nalude是一个标准模块,它受Haskell的Prelude启发。因此,nalude也是一个函数式编程库。

Nalude不明确区分Applicative或单调函数,因为它们在Python的基本结构中区分不明显。当然,主要原因是我还不够成熟。

以下函数,Nalude试图实现

  1. 折叠和遍历
  2. 列表
  3. 杂项
  4. 特殊
  5. 字符串
  6. 元组
  7. 压缩和解压缩

同时,它还实现了一些仅在Python中可用并在`extra`中包含的函数。

函数结构

折叠和遍历

  • foldr(f: Callable[[b, a], b], init: b, t: Sequence[a]): 序列的右结合折叠。
  • foldl(f, init, t): 可迭代的左结合折叠。与reduce相同。
  • foldr1(f, t): foldr的一个变体,没有基础情况。
  • foldl1(f, t): foldl的一个变体,没有基础情况。
  • product(nums): 计算数字的乘积。
  • (需要帮助) 遍历: 将结构中的每个元素映射到一个动作,从左到右评估这些动作,并收集结果。
  • (需要帮助) 序列: 从左到右评估结构中的每个动作,并收集结果。

列表

  • head(xs): 提取可迭代对象中的第一个元素。
  • last(xs): 提取可迭代对象中的最后一个元素。
  • null(xs): 测试序列是否为空。
  • 无限列表
    • iterate(f, x): 产生对 x 进行 f 的重复应用的结果。

    • repeat(x): 重复 x。

    • replicate(n, x): 返回一个长度为 n 的列表,其中每个元素的值都是 x。

    • cycle(xs): 将可迭代对象绑定到无限循环中。

    • 子列表

      • tail(xs): 提取列表头部之后的元素。
      • init(xs): 提取可迭代对象的所有元素,除了最后一个。
      • take(n, xs): 返回序列 xs 的前 n 个元素。
      • drop(n, xs): 返回 xs 中前 n 个元素之后的剩余元素。
      • splitat(n, xs): 返回一个元组,其中第一个元素是 xs 的长度为 n 的前缀,第二个元素是序列 xs 的剩余部分。
      • takewhile(p, xs): 返回满足谓词 p 的 xs 的最长前缀。
      • dropwhile(p, xs): 返回在 takewhile(p, xs) 之后剩余的子串。
      • (需要帮助) span(p, xs): 等于 (takewhile(p, xs), dropwhile(p, xs))。
      • (需要帮助) break_(p, xs): 等于 (takewhile(not_(p), xs), dropwhile(not_(p), xs))。

杂项

  • id_(x): 恒等函数。
  • const(x, _): 对于所有输入都评估为 x。
  • o(f1, f2): (.) 函数组合
  • flip(f): 翻转 f 的两个参数的顺序。
  • until(p, f, x): 产生应用 f 直到 p 成立的结果。

字符串

  • lines(s): 在换行符处将字符串拆分为字符串列表。
  • unlines(xs): lines 的逆操作,为每个元素添加换行符。
  • words(s): 将字符串拆分为由空白字符分隔的单词列表。
  • unwords(xs): words 的逆操作,用空格连接单词。

特殊

  • not_(f): 布尔 "not"。
  • all_(p, xs): 确定结构中的所有元素是否满足 p。
  • any_(p, xs): 确定结构中的任何元素是否满足 p。
  • concat(xss): 所有序列容器元素的连接。
  • concatmap(f, xss): 在容器中的所有元素上映射一个函数,并连接生成的列表。

元组

  • fst(t): 提取元组的第一个组件。
  • snd(t): 提取元组的第二个组件。
  • curry(f, a, b): 将未柯里化的函数转换为柯里化函数。
  • uncurry(f, ab@(a, b)): 将柯里化函数转换为接受对的函数。

压缩和解压缩

  • zipwith(f, *seqs): zipwith 是 map(f, zip),但 f 接受单独的参数而不是元组。
  • unzip(pairs): 将对的可迭代对象转换为一个元组序列。(非懒加载)

额外

  • flatten(xs,*,ignore=(dict,)): 将可迭代的可迭代对象展开为一个单可迭代对象。它将忽略 ignore 元组中的实例。

开始使用

安装

pip install nalude

结语

历史

版本 0.3.0

  • 数据: <Sun Mar 10, 2019>
  • 添加: - 展平迭代器时的自定义忽略。

版本 0.2.0

  • 数据: <Fri Feb 15, 2019>
  • 添加: - 在 extra 中添加 flatten。

版本 0.1.0

  • 数据: <Wed Feb 06, 2019>
  • 纪念版本: 首次发布。

项目详细信息


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

nalude-0.3.0.tar.gz (18.1 kB 查看散列值)

上传时间 源代码

构建分发

nalude-0.3.0-py3-none-any.whl (57.7 kB 查看散列值)

上传时间 Python 3

支持者

AWSAWS 云计算和安全赞助商 DatadogDatadog 监控 FastlyFastly CDN GoogleGoogle 下载分析 MicrosoftMicrosoft PSF赞助商 PingdomPingdom 监控 SentrySentry 错误日志 StatusPageStatusPage 状态页面