序列学习

序列学习
序列sequence是一个混入类,其子类必须实现length ( seq -- n ) 词,还有
nth ( n seq -- elt ) 或者 nth-unsafe ( n seq -- elt )之一,也就是说一个序列必须知道其长度和每个位置的元素
set-nth( elt n seq -- ) set-nth-unsafe( elt n seq -- )
相当于 Interface Sequence { int length( ); Elt nth(int n);}

不可变序列必须实现词immutable ( seq -- * )

设置序列的长是可选的,因为并不是所有的序列都是可变的
set-length ( n seq -- ) lengthen ( n seq -- )

like ( seq exemplar -- newseq ) 把其他的序列克隆自己的格式

f作为一个序列

整数也表示一个序列

访问序列元素
?nth ( n seq -- elt/f ), first, second, third, fourth, first2, first3, first4

序列组合

迭代
each ( seq quot -- ) 在序列上连续调用quot, eg: 4 [ . ] each >> 0 1 2 3 4
reduce ( seq identity quot -- result ) eg: 5 1 [ + ] reduce >> 11
interleave ( seq between quot -- ) 在序列的每个元素上调用quot,并在2个
元素之间调用between. eg: { "I" "LOVE" "YOU" } [ { "XU" "JUAN" } [ write ] each ] [ write ] interleave

2each ( seq1 seq2 quot -- ) 在成对的序列上调用quot eg: { "I" "LOVE" "YOU" } { "XU" "JUAN" "" } [ append write ] 2each

2reduce ( seq1 seq2 identity quot -- result )

映射
map ( seq quot -- newseq )
2map ( seq1 seq2 quot -- newseq )
accumulate ( seq indentity quot -- final newseq )
unfold ( pre quot tail -- seq )

过滤
push-if ( elt quot accum -- )
subset ( seq quot -- subseq )


添加删除
add, remove, seq-diif(集合中的差)

追加序列
append, 3append, concat, join
对其字符串的
pad-left ( seq n elt -- padded ) pad-right ( seq n elt -- pandded )
子列和切片
subseq ( from to seq -- subseq ), head ( seq n -- headseq ), tail ( seq n -- seq )
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值