标准模块。灵感来自哈斯克尔的前奏曲。
nalude的Python项目详细描述
目录
序言
我喜欢haskell,也希望haskell中的一些prelude函数可以在python中使用。
希望您喜欢用Nalude编写代码。
纳劳德
纳劳德是一个标准的模块,它的灵感来自哈斯克尔的前奏曲。因此,纳劳德也是 函数式编程库。
Nalude没有明确区分applicative函数和monadic函数,因为它们不是 在python的基本结构上有很好的区别。当然,主要原因是我也是 新鲜,
纳劳德试图实现以下功能:
- 折叠和遍历
- 列表
- 其他
- 特色菜
- 字符串
- 元组
- 压缩和解压缩
同时,它还实现了一些仅在python中可用的函数 包含在"extra"中。
函数结构
折叠和遍历
- foldr(f:callable[[b,a],b],init:b,t:sequence[a]):序列的右结合折叠。
- foldl(f,init,t):iterable的左结合折叠。与
reduce
相同 - foldr1(f,t):不带基本情况的foldr的变体。
- foldl1(f,t):不带基本情况的foldl的变体。
- 乘积(nums):计算数字的乘积。
- (需要帮助)遍历:将结构的每个元素映射到操作,评估这些操作 从左到右,收集结果。
- (需要帮助)序列:从左到右评估结构中的每个操作,并收集 结果。
列表
- 头(xs):提取iterable的第一个元素。
- 最后(xs):提取iterable的最后一个元素。
- 空(xs):测试序列是否为空。
- 无限列表
迭代(f,x):生成f到x的重复应用的元组。
重复(x):重复x。
复制(n,x):返回长度n的列表,x是每个元素的值。
循环(xs):将一个Iterable绑定到无限大的圆圈。
子列表
- 尾部(xs):提取列表头部之后的元素。
- init(xs):提取iterable的所有元素,最后一个除外。
- 获取(n,xs):返回序列xs的前n个元素。
- 删除(n,xs):返回xs的主元素在前n个元素之后。
- splitat(n,xs):返回一个元组,其中第一个元素是长度为n和的xs前缀 第二个元素是序列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(非p,xs), dropwhile(不是(p,xs))。
其他
- id(x):标识功能。
- const(x,u):对所有输入计算为x。
- o(f1,f2):(.)函数组成
- flip(f):flip将其两个参数按f的相反顺序排列。
- 直到(p,f,x):产生应用f直到p保持的结果。
字符串
- 行:在换行符处将字符串分解成字符串列表。
- 取消行(xs):行的逆操作,在每个行上附加一个新行。
- 单词:将字符串拆分为单词列表,单词列表由空格分隔。
- unwords(xs):单词的逆运算,用空格连接单词。
特色菜
- 非(f):布尔型"非"。
- 全部(p,xs):确定结构的所有元素是否满足p。
- 任何(p,xs):确定结构的sny元素是否满足p。
- concat(xss):序列容器中所有元素的连接。
- concatmap(f,xss):将函数映射到容器的所有元素上,并将 结果列表。
元组
- fst(t):提取元组的第一个分量。
- snd(t):提取元组的第二个分量。
- 咖喱(f,a,b):将未载波函数转换为curry函数。
- uncurry(f,a b@(a,b)):将curried函数转换为成对的函数。
压缩和解压缩
- zipWith(f,*seqs):zipWith是映射(f,zip),但f接受单独的参数而不是元组
- 解压缩(对):将一个iterable对转换成一个序列元组。(不懒)
额外
- 展平(xs,*,ignore=(dict,)):将iterable的iterable展平为单个iterable。它将
忽略
忽略
元组中的实例。
开始
安装
pip install nalude
epoligue
历史记录
0.3.0版
- 数据:<;2019年3月10日>;
- 添加:-可展平时自定义忽略。
0.2.0版
- 数据:<;2019年2月15日星期五>;
- 添加:-额外展平。
0.1.0版
- 数据:<;2019年2月6日星期三>;
- 纪念版:第一次发行。