16. 函数式编程库
功能模块实现一组高阶函数和模式,以向 Daslang 公开函数编程模式。
所有函数和符号都在 “functional” 模块中,使用 require 来访问它。:
require daslib/functional
16.1. Map, reduce
filter (src:iterator<auto(TT)> -const;blk:lambda<(what:TT const -&):bool> const) : auto
filter (src:iterator<auto(TT)> -const;blk:function<(what:TT const -&):bool> const) : auto
map (src:iterator<auto(TT)> -const;blk:lambda<(what:TT const -&):auto(QQ)> const) : auto
map (src:iterator<auto(TT)> -const;blk:function<(what:TT const -&):auto(QQ)> const) : auto
islice (src:iterator<auto(TT)> -const;start:int const;stop:int const) : auto
- filter(src: iterator<auto(TT)>; blk: lambda<(what:TT const):bool> const)
filter returns auto
argument |
argument type |
---|---|
src |
iterator<auto(TT)> |
blk |
lambda<(what:TT const):bool> const |
迭代 src 并仅生成 blk 返回 true 的那些元素 filter with function
- filter(src: iterator<auto(TT)>; blk: function<(what:TT const):bool> const)
filter returns auto
argument |
argument type |
---|---|
src |
iterator<auto(TT)> |
blk |
function<(what:TT const):bool> const |
迭代 src 并仅生成 blk 返回 true 的那些元素 filter with function
- map(src: iterator<auto(TT)>; blk: lambda<(what:TT const):auto(QQ)> const)
map returns auto
argument |
argument type |
---|---|
src |
iterator<auto(TT)> |
blk |
lambda<(what:TT const):auto(QQ)> const |
减少 值,任何可调用
- map(src: iterator<auto(TT)>; blk: function<(what:TT const):auto(QQ)> const)
map returns auto
argument |
argument type |
---|---|
src |
iterator<auto(TT)> |
blk |
function<(what:TT const):auto(QQ)> const |
减少 值,任何可调用
- reduce(it: iterator<auto(TT)> const; blk: lambda<(left:TT const;right:TT const):TT const> const)
reduce returns auto
argument |
argument type |
---|---|
it |
iterator<auto(TT)> const |
blk |
lambda<(left:TT const;right:TT const):TT const> const |
所有元素的总和
- reduce(it: iterator<auto(TT)> const; blk: function<(left:TT const;right:TT const):TT const> const)
reduce returns auto
argument |
argument type |
---|---|
it |
iterator<auto(TT)> const |
blk |
function<(left:TT const;right:TT const):TT const> const |
所有元素的总和
- reduce(it: iterator<auto(TT)> const; blk: block<(left:TT const;right:TT const):TT const> const)
reduce returns auto
argument |
argument type |
---|---|
it |
iterator<auto(TT)> const |
blk |
block<(left:TT const;right:TT const):TT const> const |
所有元素的总和
- sum(it: iterator<auto(TT)> const)
sum returns auto
argument |
argument type |
---|---|
it |
iterator<auto(TT)> const |
迭代 it 并产生所有元素的总和 same as reduce(it, @(a,b) => a + b) any
- any(it: auto const)
any returns auto
argument |
argument type |
---|---|
it |
auto const |
迭代 it 并生成 true,如果任何元素为 true。 all
- all(it: auto const)
all returns auto
argument |
argument type |
---|---|
it |
auto const |
迭代 it 并生成 true,如果所有元素都为 true,则生成 true
- cycle(src: iterator<auto(TT)>)
cycle returns auto
argument |
argument type |
---|---|
src |
iterator<auto(TT)> |
endlessly iterates over src
- islice(src: iterator<auto(TT)>; start: int const; stop: int const)
islice returns auto
argument |
argument type |
---|---|
src |
iterator<auto(TT)> |
start |
int const |
stop |
int const |
迭代 src 并仅生成 Range[start,stop) 中的元素 [[ value; value; value; …. count times ]]
- repeat_ref(value: auto(TT) const; total: int)
repeat_ref returns auto
argument |
argument type |
---|---|
value |
auto(TT) const |
total |
int |
通过引用 count 次产生 value [[ value; value; value; …. count times ]]
- repeat(value: auto(TT) const; count: int)
repeat returns auto
argument |
argument type |
---|---|
value |
auto(TT) const |
count |
int |
产生 value count 次
- not(x: auto const)
not returns auto
argument |
argument type |
---|---|
x |
auto const |
yeilds !x
- echo(x: auto; extra: string const)
echo returns auto
argument |
argument type |
---|---|
x |
auto |
extra |
string const |
将字符串的内容打印到输出中,并附加 extra 字符串
- flatten(it: iterator<auto(TT)>)
flatten returns auto
argument |
argument type |
---|---|
it |
iterator<auto(TT)> |
迭代 it,然后迭代 it 的每个元素并生成它
16.2. Queries
- is_equal(a: auto const; b: auto const)
is_equal returns auto
argument |
argument type |
---|---|
a |
auto const |
b |
auto const |
如果 a 和 b 相等,则生成 true
- is_not_equal(a: auto const; b: auto const)
is_not_equal returns auto
argument |
argument type |
---|---|
a |
auto const |
b |
auto const |
如果 a 和 b 不相等,则生成 true
16.3. Uncategorized
- sorted(arr: array<auto>)
sorted returns auto
argument |
argument type |
---|---|
arr |
array<auto> |
迭代 input 并返回其排序版本
- sorted(it: iterator<auto(TT)>)
sorted returns auto
argument |
argument type |
---|---|
it |
iterator<auto(TT)> |
迭代 input 并返回其排序版本