Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
69
Task/Collections/Factor/collections.factor
Normal file
69
Task/Collections/Factor/collections.factor
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
USING: assocs deques dlists lists lists.lazy sequences sets ;
|
||||
|
||||
! ===fixed-size sequences===
|
||||
{ 1 2 "foo" 3 } ! array
|
||||
[ 1 2 3 + * ] ! quotation
|
||||
"Hello, world!" ! string
|
||||
B{ 1 2 3 } ! byte array
|
||||
?{ f t t } ! bit array
|
||||
|
||||
! Add an element to a fixed-size sequence
|
||||
{ 1 2 3 } 4 suffix ! { 1 2 3 4 }
|
||||
|
||||
! Append a sequence to a fixed-size sequence
|
||||
{ 1 2 3 } { 4 5 6 } append ! { 1 2 3 4 5 6 }
|
||||
|
||||
! Sequences are sets
|
||||
{ 1 1 2 3 } { 2 5 7 8 } intersect ! { 2 }
|
||||
|
||||
! Strings are just arrays of code points
|
||||
"Hello" { } like ! { 72 101 108 108 111 }
|
||||
{ 72 101 108 108 111 } "" like ! "Hello"
|
||||
|
||||
! ===resizable sequences===
|
||||
V{ 1 2 "foo" 3 } ! vector
|
||||
BV{ 1 2 255 } ! byte vector
|
||||
SBUF" Hello, world!" ! string buffer
|
||||
|
||||
! Add an element to a resizable sequence by mutation
|
||||
V{ 1 2 3 } 4 suffix! ! V{ 1 2 3 4 }
|
||||
|
||||
! Append a sequence to a resizable sequence by mutation
|
||||
V{ 1 2 3 } { 4 5 6 } append! ! V{ 1 2 3 4 5 6 }
|
||||
|
||||
! Sequences are stacks
|
||||
V{ 1 2 3 } pop ! 3
|
||||
|
||||
! ===associative mappings===
|
||||
{ { "hamburger" 150 } { "soda" 99 } { "fries" 99 } } ! alist
|
||||
H{ { 1 "a" } { 2 "b" } } ! hash table
|
||||
|
||||
! Add a key-value pair to an assoc
|
||||
3 "c" H{ { 1 "a" } { 2 "b" } } [ set-at ] keep
|
||||
! H{ { 1 "a" } { 2 "b" } { "c" 3 } }
|
||||
|
||||
! ===linked lists===
|
||||
T{ cons-state f 1 +nil+ } ! literal list syntax
|
||||
T{ cons-state { car 1 } { cdr +nil+ } } ! literal list syntax
|
||||
! with car 1 and cdr nil
|
||||
|
||||
! One method of manually constructing a list
|
||||
1 2 3 4 +nil+ cons cons cons cons
|
||||
|
||||
1 2 2list ! convenience word for list construction
|
||||
! T{ cons-state
|
||||
! { car 1 }
|
||||
! { cdr T{ cons-state { car 2 } { cdr +nil+ } } }
|
||||
! }
|
||||
|
||||
{ 1 2 3 4 } sequence>list ! make a list from a sequence
|
||||
|
||||
0 lfrom ! a lazy list from 0 to infinity
|
||||
0 [ 2 + ] lfrom-by ! a lazy list of all even numbers >= 0.
|
||||
|
||||
DL{ 1 2 3 } ! double linked list / deque
|
||||
3 DL{ 1 2 } [ push-front ] keep ! DL{ 3 1 2 }
|
||||
3 DL{ 1 2 } [ push-back ] keep ! DL{ 1 2 3 }
|
||||
|
||||
! Factor also comes with disjoint sets, interval maps, heaps,
|
||||
! boxes, directed graphs, locked I/O buffers, trees, and more!
|
||||
Loading…
Add table
Add a link
Reference in a new issue