@@ -112,8 +112,8 @@ discard block |
||
112 | 112 | * @param callable $predicate the filter function |
113 | 113 | * @return \Closure |
114 | 114 | */ |
115 | -function _make_filterer (callable $append, callable $predicate) { |
|
116 | - return function ($acc, ...$entry) use ($append, $predicate) { |
|
115 | +function _make_filterer(callable $append, callable $predicate) { |
|
116 | + return function($acc, ...$entry) use ($append, $predicate) { |
|
117 | 117 | if ($predicate($entry[0])) { |
118 | 118 | $append($acc, ...$entry); |
119 | 119 | } |
@@ -202,7 +202,7 @@ discard block |
||
202 | 202 | */ |
203 | 203 | function reduce() { |
204 | 204 | static $reduce = false; |
205 | - $reduce = $reduce ?: curry(function($fn, $initial, $list){ |
|
205 | + $reduce = $reduce ?: curry(function($fn, $initial, $list) { |
|
206 | 206 | return array_reduce($list, $fn, $initial); |
207 | 207 | }); |
208 | 208 | return _apply($reduce, func_get_args()); |
@@ -229,7 +229,7 @@ discard block |
||
229 | 229 | */ |
230 | 230 | function each() { |
231 | 231 | static $each = false; |
232 | - $each = $each ?: curry(function($fn, $list){ |
|
232 | + $each = $each ?: curry(function($fn, $list) { |
|
233 | 233 | foreach ($list as $item) { |
234 | 234 | $fn($item); |
235 | 235 | } |
@@ -279,10 +279,10 @@ discard block |
||
279 | 279 | * @param array|string $list |
280 | 280 | * @return mixed |
281 | 281 | */ |
282 | -function last () { |
|
282 | +function last() { |
|
283 | 283 | static $last = false; |
284 | 284 | $last = $last ?: curry(function($list) { |
285 | - if(is_string($list)) |
|
285 | + if (is_string($list)) |
|
286 | 286 | return substr($list, -1); |
287 | 287 | $size = count($list); |
288 | 288 | return ($size > 0) |
@@ -309,10 +309,10 @@ discard block |
||
309 | 309 | * @param array|string $list |
310 | 310 | * @return array |
311 | 311 | */ |
312 | -function init () { |
|
312 | +function init() { |
|
313 | 313 | static $init = false; |
314 | 314 | $init = $init ?: curry(function($list) { |
315 | - if(is_string($list)) { |
|
315 | + if (is_string($list)) { |
|
316 | 316 | $size = strlen($list); |
317 | 317 | return ($size > 1) |
318 | 318 | ? substr($list, 0, $size - 1) |
@@ -343,10 +343,10 @@ discard block |
||
343 | 343 | * @param array|string $list |
344 | 344 | * @return array |
345 | 345 | */ |
346 | -function tail () { |
|
346 | +function tail() { |
|
347 | 347 | static $tail = false; |
348 | 348 | $tail = $tail ?: curry(function($list) { |
349 | - if(is_string($list)) |
|
349 | + if (is_string($list)) |
|
350 | 350 | return (strlen($list) > 1) |
351 | 351 | ? substr($list, 1) |
352 | 352 | : ''; |
@@ -371,7 +371,7 @@ discard block |
||
371 | 371 | * @param array|string $list |
372 | 372 | * @return array |
373 | 373 | */ |
374 | -function reverse () { |
|
374 | +function reverse() { |
|
375 | 375 | static $reverse = false; |
376 | 376 | $reverse = $reverse ?: curry(function($list) { |
377 | 377 | return is_string($list) |
@@ -424,7 +424,7 @@ discard block |
||
424 | 424 | static $allSatisfies = false; |
425 | 425 | $allSatisfies = $allSatisfies ?: curry(function($predicate, $list) { |
426 | 426 | foreach ($list as $item) { |
427 | - if (! $predicate($item)) |
|
427 | + if (!$predicate($item)) |
|
428 | 428 | return false; |
429 | 429 | } |
430 | 430 | return true; |
@@ -600,7 +600,7 @@ discard block |
||
600 | 600 | */ |
601 | 601 | function append() { |
602 | 602 | static $append = false; |
603 | - $append = $append ?: curry(function ($item, $list) { |
|
603 | + $append = $append ?: curry(function($item, $list) { |
|
604 | 604 | return is_string($list) |
605 | 605 | ? $list . $item |
606 | 606 | : array_merge($list, [$item]); |
@@ -626,7 +626,7 @@ discard block |
||
626 | 626 | */ |
627 | 627 | function prepend() { |
628 | 628 | static $prepend = false; |
629 | - $prepend = $prepend ?: curry(function ($item, $list) { |
|
629 | + $prepend = $prepend ?: curry(function($item, $list) { |
|
630 | 630 | return is_string($list) |
631 | 631 | ? $item . $list |
632 | 632 | : array_merge([$item], $list); |
@@ -661,7 +661,7 @@ discard block |
||
661 | 661 | $length = length($list); |
662 | 662 | if ($count > $length || $count < -$length) |
663 | 663 | return $list; |
664 | - if(is_string($list)) { |
|
664 | + if (is_string($list)) { |
|
665 | 665 | return ($count >= 0) |
666 | 666 | ? substr($list, 0, $count) |
667 | 667 | : substr($list, $count); |
@@ -812,7 +812,7 @@ discard block |
||
812 | 812 | $count = ($count > 0) |
813 | 813 | ? $count - $length |
814 | 814 | : $count + $length; |
815 | - if(is_string($list)) { |
|
815 | + if (is_string($list)) { |
|
816 | 816 | return ($count >= 0) |
817 | 817 | ? substr($list, 0, $count) |
818 | 818 | : substr($list, $count); |
@@ -1169,7 +1169,7 @@ discard block |
||
1169 | 1169 | $indexOf = $indexOf ?: curry(function($item, $list) { |
1170 | 1170 | if (is_string($list)) { |
1171 | 1171 | $index = strpos($list, $item); |
1172 | - return $index === false ? -1 : $index; |
|
1172 | + return $index === false ? - 1 : $index; |
|
1173 | 1173 | } |
1174 | 1174 | $list = (array) $list; |
1175 | 1175 | $index = 0; |
@@ -1180,7 +1180,7 @@ discard block |
||
1180 | 1180 | return $keys[$index]; |
1181 | 1181 | $index ++; |
1182 | 1182 | } |
1183 | - return -1; |
|
1183 | + return - 1; |
|
1184 | 1184 | }); |
1185 | 1185 | return _apply($indexOf, func_get_args()); |
1186 | 1186 | } |
@@ -1209,7 +1209,7 @@ discard block |
||
1209 | 1209 | $lastIndexOf = $lastIndexOf ?: curry(function($item, $list) { |
1210 | 1210 | if (is_string($list)) { |
1211 | 1211 | $index = strrpos($list, $item); |
1212 | - return $index === false ? -1 : $index; |
|
1212 | + return $index === false ? - 1 : $index; |
|
1213 | 1213 | } |
1214 | 1214 | $list = (array) $list; |
1215 | 1215 | $keys = array_keys($list); |
@@ -1219,7 +1219,7 @@ discard block |
||
1219 | 1219 | return $keys[$index]; |
1220 | 1220 | $index --; |
1221 | 1221 | } |
1222 | - return -1; |
|
1222 | + return - 1; |
|
1223 | 1223 | }); |
1224 | 1224 | return _apply($lastIndexOf, func_get_args()); |
1225 | 1225 | } |
@@ -1254,7 +1254,7 @@ discard block |
||
1254 | 1254 | } |
1255 | 1255 | $index ++; |
1256 | 1256 | } |
1257 | - if (! $found) { |
|
1257 | + if (!$found) { |
|
1258 | 1258 | $result[$size] = $item; |
1259 | 1259 | $size ++; |
1260 | 1260 | } |
@@ -1314,9 +1314,9 @@ discard block |
||
1314 | 1314 | static $groupBy = false; |
1315 | 1315 | $groupBy = $groupBy ?: curry(function($fn, $list) { |
1316 | 1316 | $result = []; |
1317 | - foreach($list as $item) { |
|
1317 | + foreach ($list as $item) { |
|
1318 | 1318 | $index = $fn($item); |
1319 | - if (! isset($result[$index])) |
|
1319 | + if (!isset($result[$index])) |
|
1320 | 1320 | $result[$index] = []; |
1321 | 1321 | $result[$index][] = $item; |
1322 | 1322 | } |
@@ -15,8 +15,6 @@ discard block |
||
15 | 15 | * @stream |
16 | 16 | * @signature (a -> b) -> [a] -> [b] |
17 | 17 | * @signature (a -> b) -> {k: a} -> {k: b} |
18 | - * @param callable $fn |
|
19 | - * @param array $list |
|
20 | 18 | * @return array |
21 | 19 | */ |
22 | 20 | function map() { |
@@ -36,8 +34,6 @@ discard block |
||
36 | 34 | * |
37 | 35 | * @stream |
38 | 36 | * @signature (a -> [b]) -> [a] -> [b] |
39 | - * @param callable $fn |
|
40 | - * @param array $list |
|
41 | 37 | * @return array |
42 | 38 | */ |
43 | 39 | function chain() { |
@@ -66,8 +62,6 @@ discard block |
||
66 | 62 | * ``` |
67 | 63 | * @stream |
68 | 64 | * @signature (a -> Boolean) -> [a] -> [a] |
69 | - * @param callable $fn |
|
70 | - * @param array|\ArrayObject|\SplObjectStorage $list |
|
71 | 65 | * @return array|\ArrayObject|\SplObjectStorage|callable |
72 | 66 | */ |
73 | 67 | function filter() { |
@@ -150,8 +144,6 @@ discard block |
||
150 | 144 | * ``` |
151 | 145 | * |
152 | 146 | * @signature (a -> Boolean) -> {k: a} -> {k: a} |
153 | - * @param callable $predicate |
|
154 | - * @param array|\ArrayObject|\SplObjectStorage $list |
|
155 | 147 | * @return array|\ArrayObject|\SplObjectStorage|callable |
156 | 148 | */ |
157 | 149 | function filter_values() { |
@@ -195,9 +187,6 @@ discard block |
||
195 | 187 | * |
196 | 188 | * @stream |
197 | 189 | * @signature (* -> a -> *) -> * -> [a] -> * |
198 | - * @param callable $fn |
|
199 | - * @param mixed $initial |
|
200 | - * @param array $list |
|
201 | 190 | * @return array |
202 | 191 | */ |
203 | 192 | function reduce() { |
@@ -223,8 +212,6 @@ discard block |
||
223 | 212 | * |
224 | 213 | * @stream |
225 | 214 | * @signature (a -> *) -> [a] -> [a] |
226 | - * @param callable $fn |
|
227 | - * @param array $list |
|
228 | 215 | * @return array |
229 | 216 | */ |
230 | 217 | function each() { |
@@ -251,7 +238,6 @@ discard block |
||
251 | 238 | * @stream |
252 | 239 | * @signature [a] -> a |
253 | 240 | * @signature String -> String |
254 | - * @param array|string $list |
|
255 | 241 | * @return mixed |
256 | 242 | */ |
257 | 243 | function head() { |
@@ -276,7 +262,6 @@ discard block |
||
276 | 262 | * @stream |
277 | 263 | * @signature [a] -> a |
278 | 264 | * @signature String -> String |
279 | - * @param array|string $list |
|
280 | 265 | * @return mixed |
281 | 266 | */ |
282 | 267 | function last () { |
@@ -306,7 +291,6 @@ discard block |
||
306 | 291 | * @stream |
307 | 292 | * @signature [a] -> a |
308 | 293 | * @signature String -> String |
309 | - * @param array|string $list |
|
310 | 294 | * @return array |
311 | 295 | */ |
312 | 296 | function init () { |
@@ -340,7 +324,6 @@ discard block |
||
340 | 324 | * @stream |
341 | 325 | * @signature [a] -> a |
342 | 326 | * @signature String -> String |
343 | - * @param array|string $list |
|
344 | 327 | * @return array |
345 | 328 | */ |
346 | 329 | function tail () { |
@@ -368,7 +351,6 @@ discard block |
||
368 | 351 | * @stream |
369 | 352 | * @signature [a] -> [a] |
370 | 353 | * @signature String -> String |
371 | - * @param array|string $list |
|
372 | 354 | * @return array |
373 | 355 | */ |
374 | 356 | function reverse () { |
@@ -392,7 +374,6 @@ discard block |
||
392 | 374 | * @stream |
393 | 375 | * @signature [a] -> Number |
394 | 376 | * @signature String -> Number |
395 | - * @param array|string $list |
|
396 | 377 | * @return int |
397 | 378 | */ |
398 | 379 | function length() { |
@@ -416,8 +397,6 @@ discard block |
||
416 | 397 | * |
417 | 398 | * @stream |
418 | 399 | * @signature (a -> Boolean) -> [a] -> Boolean |
419 | - * @param callable $predicate |
|
420 | - * @param array $list |
|
421 | 400 | * @return bool |
422 | 401 | */ |
423 | 402 | function allSatisfies() { |
@@ -443,8 +422,6 @@ discard block |
||
443 | 422 | * |
444 | 423 | * @stream |
445 | 424 | * @signature (a -> Boolean) -> [a] -> Boolean |
446 | - * @param callable $predicate |
|
447 | - * @param array $list |
|
448 | 425 | * @return bool |
449 | 426 | */ |
450 | 427 | function anySatisfies() { |
@@ -470,8 +447,6 @@ discard block |
||
470 | 447 | * @stream |
471 | 448 | * @signature [*] -> [*] -> [*] |
472 | 449 | * @signature String -> String -> String |
473 | - * @param array $list1 |
|
474 | - * @param array $list2 |
|
475 | 450 | * @return array |
476 | 451 | */ |
477 | 452 | function concat() { |
@@ -494,7 +469,6 @@ discard block |
||
494 | 469 | * |
495 | 470 | * @stream |
496 | 471 | * @signature [[a]] -> [a] |
497 | - * @param array $lists |
|
498 | 472 | * @return array |
499 | 473 | */ |
500 | 474 | function concatAll() { |
@@ -529,9 +503,6 @@ discard block |
||
529 | 503 | * @stream |
530 | 504 | * @signature Number -> a -> [a] -> [a] |
531 | 505 | * @signature Number -> String -> String -> String |
532 | - * @param int $position |
|
533 | - * @param mixed $item |
|
534 | - * @param array $list |
|
535 | 506 | * @return array |
536 | 507 | */ |
537 | 508 | function insert() { |
@@ -559,9 +530,6 @@ discard block |
||
559 | 530 | * @stream |
560 | 531 | * @signature Number -> [a] -> [a] -> [a] |
561 | 532 | * @signature Number -> String -> String -> String |
562 | - * @param int $position |
|
563 | - * @param mixed $items |
|
564 | - * @param array $list |
|
565 | 533 | * @return array |
566 | 534 | */ |
567 | 535 | function insertAll() { |
@@ -594,8 +562,6 @@ discard block |
||
594 | 562 | * @stream |
595 | 563 | * @signature * -> [*] -> [*] |
596 | 564 | * @signature String -> String -> String |
597 | - * @param mixed $item |
|
598 | - * @param array $list |
|
599 | 565 | * @return array |
600 | 566 | */ |
601 | 567 | function append() { |
@@ -620,8 +586,6 @@ discard block |
||
620 | 586 | * @stream |
621 | 587 | * @signature a -> [a] -> [a] |
622 | 588 | * @signature String -> String -> String |
623 | - * @param mixed $item |
|
624 | - * @param array $list |
|
625 | 589 | * @return array |
626 | 590 | */ |
627 | 591 | function prepend() { |
@@ -651,8 +615,6 @@ discard block |
||
651 | 615 | * @stream |
652 | 616 | * @signature Number -> [a] -> [a] |
653 | 617 | * @signature Number -> String -> String |
654 | - * @param int $count |
|
655 | - * @param array $list |
|
656 | 618 | * @return array |
657 | 619 | */ |
658 | 620 | function take() { |
@@ -685,8 +647,6 @@ discard block |
||
685 | 647 | * |
686 | 648 | * @stream |
687 | 649 | * @signature (a -> Boolean) -> [a] -> [a] |
688 | - * @param callable $predicate |
|
689 | - * @param array $list |
|
690 | 650 | * @return array |
691 | 651 | */ |
692 | 652 | function takeWhile() { |
@@ -712,8 +672,6 @@ discard block |
||
712 | 672 | * |
713 | 673 | * @stream |
714 | 674 | * @signature (a -> Boolean) -> [a] -> [a] |
715 | - * @param callable $predicate |
|
716 | - * @param array $list |
|
717 | 675 | * @return array |
718 | 676 | */ |
719 | 677 | function takeLastWhile() { |
@@ -739,8 +697,6 @@ discard block |
||
739 | 697 | * |
740 | 698 | * @stream |
741 | 699 | * @signature (a -> Boolean) -> [a] -> [a] |
742 | - * @param callable $predicate |
|
743 | - * @param array $list |
|
744 | 700 | * @return array |
745 | 701 | */ |
746 | 702 | function takeUntil() { |
@@ -766,8 +722,6 @@ discard block |
||
766 | 722 | * |
767 | 723 | * @stream |
768 | 724 | * @signature (a -> Boolean) -> [a] -> [a] |
769 | - * @param callable $predicate |
|
770 | - * @param array $list |
|
771 | 725 | * @return array |
772 | 726 | */ |
773 | 727 | function takeLastUntil() { |
@@ -798,8 +752,6 @@ discard block |
||
798 | 752 | * @stream |
799 | 753 | * @signature Number -> [a] -> [a] |
800 | 754 | * @signature Number -> String -> String |
801 | - * @param int $count |
|
802 | - * @param array $list |
|
803 | 755 | * @return array |
804 | 756 | */ |
805 | 757 | function remove() { |
@@ -836,8 +788,6 @@ discard block |
||
836 | 788 | * |
837 | 789 | * @stream |
838 | 790 | * @signature (a -> Boolean) -> [a] -> [a] |
839 | - * @param callable $predicate |
|
840 | - * @param array $list |
|
841 | 791 | * @return array |
842 | 792 | */ |
843 | 793 | function removeWhile() { |
@@ -863,8 +813,6 @@ discard block |
||
863 | 813 | * |
864 | 814 | * @stream |
865 | 815 | * @signature (a -> Boolean) -> [a] -> [a] |
866 | - * @param callable $predicate |
|
867 | - * @param array $list |
|
868 | 816 | * @return array |
869 | 817 | */ |
870 | 818 | function removeLastWhile() { |
@@ -891,8 +839,6 @@ discard block |
||
891 | 839 | * |
892 | 840 | * @stream |
893 | 841 | * @signature (a -> Boolean) -> [a] -> [a] |
894 | - * @param callable $predicate |
|
895 | - * @param array $list |
|
896 | 842 | * @return array |
897 | 843 | */ |
898 | 844 | function removeUntil() { |
@@ -919,8 +865,6 @@ discard block |
||
919 | 865 | * |
920 | 866 | * @stream |
921 | 867 | * @signature (a -> Boolean) -> [a] -> [a] |
922 | - * @param callable $predicate |
|
923 | - * @param array $list |
|
924 | 868 | * @return array |
925 | 869 | */ |
926 | 870 | function removeLastUntil() { |
@@ -943,7 +887,6 @@ discard block |
||
943 | 887 | * |
944 | 888 | * @stream |
945 | 889 | * @signature [(k, v)] -> {k: v} |
946 | - * @param array $pairs |
|
947 | 890 | * @return stdClass |
948 | 891 | */ |
949 | 892 | function fromPairs() { |
@@ -973,8 +916,6 @@ discard block |
||
973 | 916 | * @stream |
974 | 917 | * @signature Number -> [a] -> [[a]] |
975 | 918 | * @signature Number -> String -> [String] |
976 | - * @param int $size |
|
977 | - * @param array $list |
|
978 | 919 | * @return array |
979 | 920 | */ |
980 | 921 | function slices() { |
@@ -1008,8 +949,6 @@ discard block |
||
1008 | 949 | * @stream |
1009 | 950 | * @signature a -> [a] -> Boolean |
1010 | 951 | * @signature String -> String -> Boolean |
1011 | - * @param mixed $item |
|
1012 | - * @param array|string $list |
|
1013 | 952 | * @return bool |
1014 | 953 | */ |
1015 | 954 | function contains() { |
@@ -1035,8 +974,6 @@ discard block |
||
1035 | 974 | * @stream |
1036 | 975 | * @signature (a -> Boolean) -> [a] -> Maybe(Number) |
1037 | 976 | * @signature (v -> Boolean) -> {k: v} -> Maybe(k) |
1038 | - * @param callable $predicate |
|
1039 | - * @param array $list |
|
1040 | 977 | * @return mixed |
1041 | 978 | */ |
1042 | 979 | function findIndex() { |
@@ -1064,8 +1001,6 @@ discard block |
||
1064 | 1001 | * @stream |
1065 | 1002 | * @signature (a -> Boolean) -> [a] -> Maybe(Number) |
1066 | 1003 | * @signature (v -> Boolean) -> {k: v} -> Maybe(k) |
1067 | - * @param callable $predicate |
|
1068 | - * @param array $list |
|
1069 | 1004 | * @return mixed |
1070 | 1005 | */ |
1071 | 1006 | function findLastIndex() { |
@@ -1094,8 +1029,6 @@ discard block |
||
1094 | 1029 | * |
1095 | 1030 | * @stream |
1096 | 1031 | * @signature (a -> Boolean) -> [a] -> Maybe(a) |
1097 | - * @param callable $predicate |
|
1098 | - * @param array $list |
|
1099 | 1032 | * @return mixed |
1100 | 1033 | */ |
1101 | 1034 | function find() { |
@@ -1121,8 +1054,6 @@ discard block |
||
1121 | 1054 | * |
1122 | 1055 | * @stream |
1123 | 1056 | * @signature (a -> Boolean) -> [a] -> Maybe(a) |
1124 | - * @param callable $predicate |
|
1125 | - * @param array $list |
|
1126 | 1057 | * @return mixed |
1127 | 1058 | */ |
1128 | 1059 | function findLast() { |
@@ -1160,8 +1091,6 @@ discard block |
||
1160 | 1091 | * @signature a -> [a] -> Number |
1161 | 1092 | * @signature v -> {k: v} -> Maybe(k) |
1162 | 1093 | * @signature String -> String -> Number |
1163 | - * @param mixed $item |
|
1164 | - * @param array $list |
|
1165 | 1094 | * @return int |
1166 | 1095 | */ |
1167 | 1096 | function indexOf() { |
@@ -1200,8 +1129,6 @@ discard block |
||
1200 | 1129 | * @signature a -> [a] -> Number |
1201 | 1130 | * @signature v -> {k: v} -> Maybe(k) |
1202 | 1131 | * @signature String -> String -> Number |
1203 | - * @param mixed $item |
|
1204 | - * @param array $list |
|
1205 | 1132 | * @return int |
1206 | 1133 | */ |
1207 | 1134 | function lastIndexOf() { |
@@ -1235,8 +1162,6 @@ discard block |
||
1235 | 1162 | * |
1236 | 1163 | * @stream |
1237 | 1164 | * @signature (a -> a -> Boolean) -> [a] -> [a] |
1238 | - * @param callable $areEqual |
|
1239 | - * @param array $list |
|
1240 | 1165 | * @return array |
1241 | 1166 | */ |
1242 | 1167 | function uniqueBy() { |
@@ -1273,7 +1198,6 @@ discard block |
||
1273 | 1198 | * |
1274 | 1199 | * @stream |
1275 | 1200 | * @signature [a] -> [a] |
1276 | - * @param array $list |
|
1277 | 1201 | * @return array |
1278 | 1202 | */ |
1279 | 1203 | function unique() { |
@@ -1306,8 +1230,6 @@ discard block |
||
1306 | 1230 | * |
1307 | 1231 | * @stream |
1308 | 1232 | * @signature (a -> String) -> [a] -> {String: a} |
1309 | - * @param callable $fn |
|
1310 | - * @param array $list |
|
1311 | 1233 | * @return array |
1312 | 1234 | */ |
1313 | 1235 | function groupBy() { |
@@ -1337,8 +1259,6 @@ discard block |
||
1337 | 1259 | * |
1338 | 1260 | * @stream |
1339 | 1261 | * @signature [a] -> [b] -> [[a,b]] |
1340 | - * @param array $list1 |
|
1341 | - * @param array $list2 |
|
1342 | 1262 | * @return array |
1343 | 1263 | */ |
1344 | 1264 | function pairsFrom() { |
@@ -1383,8 +1303,6 @@ discard block |
||
1383 | 1303 | * |
1384 | 1304 | * @stream |
1385 | 1305 | * @signature (a -> a -> Boolean) -> [a] -> [a] |
1386 | - * @param callable $compare |
|
1387 | - * @param array $list |
|
1388 | 1306 | * @return array |
1389 | 1307 | */ |
1390 | 1308 | function sort() { |