16. 函数式编程库

功能模块实现一组高阶函数和模式,以向 Daslang 公开函数编程模式。

所有函数和符号都在 “functional” 模块中,使用 require 来访问它。:

require daslib/functional

16.1. Map, reduce

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

如果 ab 相等,则生成 true

is_not_equal(a: auto const; b: auto const)

is_not_equal returns auto

argument

argument type

a

auto const

b

auto const

如果 ab 不相等,则生成 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 并返回其排序版本