序列学习

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

你可能感兴趣的:(F#)