src.elv.sh@v0.21.0-dev.0.20240515223629-06979efb9a2a/pkg/eval/builtin_fn_container_test.elvts (about) 1 ////// 2 # ns # 3 ////// 4 5 // Accessing like a map 6 ~> put (ns [&name=value])[name] 7 ▶ value 8 // Accessing using : 9 ~> var n: = (ns [&name=value]) 10 put $n:name 11 ▶ value 12 13 ## bad key in argument ## 14 ~> ns [&[]=[]] 15 Exception: bad value: key of argument of "ns" must be string, but is list 16 [tty]:1:1-11: ns [&[]=[]] 17 18 //////////// 19 # make-map # 20 //////////// 21 22 ~> make-map [] 23 ▶ [&] 24 ~> make-map [[k v]] 25 ▶ [&k=v] 26 ~> make-map [[k1 v1] [k2 v2]] 27 ▶ [&k1=v1 &k2=v2] 28 // Later key override previous one 29 ~> make-map [[k v] [k v2]] 30 ▶ [&k=v2] 31 // String of length 2 also works 32 ~> make-map [kv] 33 ▶ [&k=v] 34 35 ## bad argument ## 36 ~> make-map [{ } [k v]] 37 Exception: bad value: input to make-map must be iterable, but is fn 38 [tty]:1:1-20: make-map [{ } [k v]] 39 ~> make-map [[k v] [k]] 40 Exception: bad value: input to make-map must be iterable with 2 elements, but is list with 1 elements 41 [tty]:1:1-20: make-map [[k v] [k]] 42 43 //////// 44 # conj # 45 //////// 46 ~> conj [] a 47 ▶ [a] 48 ~> conj [a b] 49 ▶ [a b] 50 ~> conj [a b] c 51 ▶ [a b c] 52 ~> conj [a b] c d 53 ▶ [a b c d] 54 55 ///////// 56 # assoc # 57 ///////// 58 59 ~> assoc [old] 0 new 60 ▶ [new] 61 ~> assoc [&] k v 62 ▶ [&k=v] 63 ~> assoc [&k=old] k new 64 ▶ [&k=new] 65 66 ////////// 67 # dissoc # 68 ////////// 69 70 ~> dissoc [&k=v] k 71 ▶ [&] 72 73 ## bad argument ## 74 ~> dissoc foo 0 75 Exception: cannot dissoc 76 [tty]:1:1-12: dissoc foo 0 77 78 /////////// 79 # has-key # 80 /////////// 81 82 ~> has-key [&k=v] k 83 ▶ $true 84 ~> has-key [&k=v] bad 85 ▶ $false 86 ~> has-key [lorem ipsum] 0 87 ▶ $true 88 ~> has-key [lorem ipsum] 2 89 ▶ $false 90 91 ## list slices ## 92 ~> has-key [lorem ipsum] 0.. 93 ▶ $true 94 ~> has-key [lorem ipsum] 0..= 95 ▶ $true 96 ~> has-key [lorem ipsum] ..2 97 ▶ $true 98 ~> has-key [lorem ipsum] ..=2 99 ▶ $false 100 ~> has-key [lorem ipsum dolor sit] 0..4 101 ▶ $true 102 ~> has-key [lorem ipsum dolor sit] 0..=4 103 ▶ $false 104 ~> has-key [lorem ipsum dolor sit] 1..3 105 ▶ $true 106 ~> has-key [lorem ipsum dolor sit] 1..5 107 ▶ $false 108 ~> has-key [lorem ipsum dolor sit] -2..=-1 109 ▶ $true 110 111 ///////////// 112 # has-value # 113 ///////////// 114 ~> has-value [&lorem=ipsum &foo=bar] lorem 115 ▶ $false 116 ~> has-value [&lorem=ipsum &foo=bar] bar 117 ▶ $true 118 ~> has-value [foo bar] bar 119 ▶ $true 120 ~> has-value [foo bar] badehose 121 ▶ $false 122 ~> has-value [[foo] [bar]] [foo] 123 ▶ $true 124 ~> has-value "foo" o 125 ▶ $true 126 ~> has-value "foo" d 127 ▶ $false 128 129 //////// 130 # keys # 131 //////// 132 133 ~> keys [&] 134 ~> keys [&a=foo] 135 ▶ a 136 ~> keys [&a=foo &b=bar] | order 137 ▶ a 138 ▶ b 139 140 ## bad argument ## 141 ~> keys (num 1) 142 Exception: cannot iterate keys of number 143 [tty]:1:1-12: keys (num 1) 144 145 ## propagates output error ## 146 ~> keys [&a=foo] >&- 147 Exception: port does not support value output 148 [tty]:1:1-17: keys [&a=foo] >&-