序列学习
序列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 )
序列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 )