functionalscript 0.3.4 → 0.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/com/cpp/module.f.d.ts +10 -0
- package/com/cpp/module.f.js +107 -0
- package/com/cpp/test.f.d.ts +2 -0
- package/com/cpp/{test.f.ts → test.f.js} +9 -11
- package/com/cpp/testlib.f.d.ts +2 -0
- package/com/cpp/testlib.f.js +5 -0
- package/com/cs/module.f.d.ts +12 -0
- package/com/cs/module.f.js +80 -0
- package/com/cs/test.f.d.ts +2 -0
- package/com/cs/{test.f.ts → test.f.js} +9 -11
- package/com/cs/testlib.f.d.ts +2 -0
- package/com/cs/testlib.f.js +5 -0
- package/com/rust/module.f.d.ts +15 -0
- package/com/rust/module.f.js +169 -0
- package/com/rust/test.f.d.ts +2 -0
- package/com/rust/{test.f.ts → test.f.js} +7 -7
- package/com/rust/testlib.f.d.ts +2 -0
- package/com/rust/testlib.f.js +5 -0
- package/com/test/build.f.d.ts +20 -0
- package/com/test/build.f.js +58 -0
- package/com/types/module.f.d.ts +28 -0
- package/com/types/module.f.js +8 -0
- package/com/types/testlib.f.d.ts +44 -0
- package/com/types/{testlib.f.ts → testlib.f.js} +2 -3
- package/commonjs/build/module.f.d.ts +6 -0
- package/commonjs/build/module.f.js +69 -0
- package/commonjs/build/test.f.d.ts +2 -0
- package/commonjs/build/test.f.js +96 -0
- package/commonjs/module/function/{module.f.ts → module.f.d.ts} +5 -10
- package/commonjs/module/function/module.f.js +4 -0
- package/commonjs/module/module.f.d.ts +18 -0
- package/commonjs/module/module.f.js +12 -0
- package/commonjs/module.f.d.ts +6 -0
- package/commonjs/module.f.js +1 -0
- package/commonjs/package/dependencies/module.f.d.ts +7 -0
- package/commonjs/package/dependencies/module.f.js +13 -0
- package/commonjs/package/dependencies/test.f.d.ts +2 -0
- package/commonjs/package/dependencies/test.f.js +15 -0
- package/commonjs/package/module.f.d.ts +17 -0
- package/commonjs/package/module.f.js +18 -0
- package/commonjs/package/test.f.d.ts +2 -0
- package/commonjs/package/test.f.js +27 -0
- package/commonjs/path/module.f.d.ts +24 -0
- package/commonjs/path/module.f.js +114 -0
- package/commonjs/path/test.f.d.ts +25 -0
- package/commonjs/path/{test.f.ts → test.f.js} +123 -89
- package/crypto/prime_field/module.f.d.ts +43 -0
- package/crypto/prime_field/module.f.js +78 -0
- package/crypto/prime_field/test.f.d.ts +13 -0
- package/crypto/prime_field/test.f.js +149 -0
- package/crypto/secp/module.f.d.ts +68 -0
- package/crypto/secp/module.f.js +127 -0
- package/crypto/secp/test.f.d.ts +5 -0
- package/crypto/secp/test.f.js +72 -0
- package/crypto/sha2/module.f.d.ts +13 -0
- package/crypto/sha2/module.f.js +145 -0
- package/crypto/sha2/test.f.d.ts +9 -0
- package/crypto/sha2/test.f.js +82 -0
- package/dev/module.f.d.ts +1 -0
- package/dev/module.f.js +1 -0
- package/dev/test/module.f.d.ts +20 -0
- package/dev/test/module.f.js +75 -0
- package/dev/test.f.d.ts +9 -0
- package/dev/{test.f.ts → test.f.js} +22 -24
- package/djs/module.f.d.ts +17 -0
- package/djs/module.f.js +63 -0
- package/djs/parser/module.f.d.ts +12 -0
- package/djs/parser/module.f.js +333 -0
- package/djs/parser/test.f.d.ts +12 -0
- package/djs/parser/test.f.js +717 -0
- package/djs/serializer/module.f.d.ts +9 -0
- package/djs/serializer/module.f.js +81 -0
- package/djs/test/input.f.d.ts +2 -0
- package/djs/test/input.f.js +4 -0
- package/djs/test/m.f.d.ts +2 -0
- package/djs/test/m.f.js +1 -0
- package/djs/test.f.d.ts +12 -0
- package/djs/test.f.js +84 -0
- package/djs/tokenizer/module.f.d.ts +8 -0
- package/djs/tokenizer/module.f.js +60 -0
- package/djs/tokenizer/test.f.d.ts +7 -0
- package/djs/tokenizer/test.f.js +529 -0
- package/fsc/module.f.d.ts +5 -0
- package/fsc/module.f.js +75 -0
- package/fsc/test.f.d.ts +4 -0
- package/fsc/test.f.js +19 -0
- package/fsm/module.f.d.ts +13 -0
- package/fsm/module.f.js +59 -0
- package/fsm/test.f.d.ts +5 -0
- package/fsm/test.f.js +137 -0
- package/html/module.f.d.ts +13 -0
- package/html/module.f.js +58 -0
- package/html/test.f.d.ts +9 -0
- package/html/test.f.js +42 -0
- package/issues/test.f.d.ts +16 -0
- package/issues/test.f.js +70 -0
- package/js/tokenizer/module.f.d.ts +86 -0
- package/js/tokenizer/module.f.js +503 -0
- package/js/tokenizer/test.f.d.ts +9 -0
- package/js/tokenizer/test.f.js +905 -0
- package/json/module.f.d.ts +20 -0
- package/json/module.f.js +68 -0
- package/json/parser/module.f.d.ts +5 -0
- package/json/parser/module.f.js +155 -0
- package/json/parser/test.f.d.ts +5 -0
- package/json/parser/test.f.js +328 -0
- package/json/serializer/module.f.d.ts +7 -0
- package/json/serializer/module.f.js +21 -0
- package/json/serializer/test.f.d.ts +8 -0
- package/json/serializer/test.f.js +87 -0
- package/json/test.f.d.ts +8 -0
- package/json/test.f.js +61 -0
- package/json/tokenizer/module.f.d.ts +8 -0
- package/json/tokenizer/module.f.js +52 -0
- package/json/tokenizer/test.f.d.ts +6 -0
- package/json/tokenizer/test.f.js +419 -0
- package/nanvm-lib/tests/test.f.d.ts +27 -0
- package/nanvm-lib/tests/test.f.js +84 -0
- package/nodejs/version/module.f.d.ts +11 -0
- package/nodejs/version/module.f.js +16 -0
- package/nodejs/version/test.f.d.ts +2 -0
- package/nodejs/version/{test.f.ts → test.f.js} +13 -22
- package/package.json +9 -5
- package/text/ascii/module.f.d.ts +129 -0
- package/text/ascii/module.f.js +148 -0
- package/text/ascii/test.f.d.ts +4 -0
- package/text/ascii/test.f.js +14 -0
- package/text/module.f.d.ts +8 -0
- package/text/module.f.js +10 -0
- package/text/sgr/module.f.d.ts +8 -0
- package/text/sgr/module.f.js +8 -0
- package/text/test.f.d.ts +2 -0
- package/text/test.f.js +18 -0
- package/text/utf16/module.f.d.ts +9 -0
- package/text/utf16/module.f.js +66 -0
- package/text/utf16/test.f.d.ts +6 -0
- package/text/utf16/test.f.js +144 -0
- package/text/utf8/module.f.d.ts +6 -0
- package/text/utf8/module.f.js +112 -0
- package/text/utf8/test.f.d.ts +6 -0
- package/text/utf8/test.f.js +175 -0
- package/types/array/module.f.d.ts +21 -0
- package/types/array/module.f.js +23 -0
- package/types/array/test.f.d.ts +10 -0
- package/types/array/test.f.js +116 -0
- package/types/bigfloat/module.f.d.ts +3 -0
- package/types/bigfloat/module.f.js +66 -0
- package/types/bigfloat/test.f.d.ts +6 -0
- package/types/bigfloat/test.f.js +349 -0
- package/types/bigint/module.f.d.ts +54 -0
- package/types/bigint/{module.f.ts → module.f.js} +42 -65
- package/types/bigint/test.f.d.ts +16 -0
- package/types/bigint/test.f.js +199 -0
- package/types/bit_vec/module.f.d.ts +134 -0
- package/types/bit_vec/{module.f.ts → module.f.js} +47 -65
- package/types/bit_vec/test.f.d.ts +22 -0
- package/types/bit_vec/test.f.js +210 -0
- package/types/btree/find/module.f.d.ts +20 -0
- package/types/btree/find/module.f.js +84 -0
- package/types/btree/find/test.f.d.ts +2 -0
- package/types/btree/find/test.f.js +152 -0
- package/types/btree/module.f.d.ts +4 -0
- package/types/btree/module.f.js +31 -0
- package/types/btree/remove/module.f.d.ts +4 -0
- package/types/btree/remove/module.f.js +174 -0
- package/types/btree/remove/test.f.d.ts +5 -0
- package/types/btree/remove/test.f.js +634 -0
- package/types/btree/set/module.f.d.ts +3 -0
- package/types/btree/set/module.f.js +103 -0
- package/types/btree/set/test.f.d.ts +2 -0
- package/types/btree/set/test.f.js +360 -0
- package/types/btree/test.f.d.ts +8 -0
- package/types/btree/test.f.js +75 -0
- package/types/btree/types/module.f.d.ts +11 -0
- package/types/btree/types/module.f.js +1 -0
- package/types/byte_set/module.f.d.ts +16 -0
- package/types/byte_set/module.f.js +28 -0
- package/types/byte_set/test.f.d.ts +12 -0
- package/types/byte_set/test.f.js +122 -0
- package/types/function/compare/module.f.d.ts +10 -0
- package/types/function/compare/module.f.js +7 -0
- package/types/function/compare/test.f.d.ts +2 -0
- package/types/function/compare/test.f.js +8 -0
- package/types/function/module.f.d.ts +28 -0
- package/types/function/module.f.js +19 -0
- package/types/function/operator/module.f.d.ts +20 -0
- package/types/function/operator/module.f.js +18 -0
- package/types/function/test.f.d.ts +2 -0
- package/types/function/test.f.js +12 -0
- package/types/list/module.f.d.ts +50 -0
- package/types/list/module.f.js +171 -0
- package/types/list/test.f.d.ts +22 -0
- package/types/list/test.f.js +395 -0
- package/types/map/module.f.d.ts +14 -0
- package/types/map/module.f.js +31 -0
- package/types/map/test.f.d.ts +5 -0
- package/types/map/test.f.js +114 -0
- package/types/nibble_set/module.f.d.ts +10 -0
- package/types/nibble_set/module.f.js +9 -0
- package/types/nibble_set/test.f.d.ts +12 -0
- package/types/nibble_set/test.f.js +90 -0
- package/types/nullable/module.f.d.ts +3 -0
- package/types/nullable/module.f.js +2 -0
- package/types/nullable/test.f.d.ts +2 -0
- package/types/nullable/test.f.js +12 -0
- package/types/number/module.f.d.ts +6 -0
- package/types/number/module.f.js +8 -0
- package/types/number/test.f.d.ts +11 -0
- package/types/number/test.f.js +124 -0
- package/types/object/module.f.d.ts +10 -0
- package/types/object/module.f.js +12 -0
- package/types/object/test.f.d.ts +5 -0
- package/types/object/test.f.js +17 -0
- package/types/range/module.f.d.ts +3 -0
- package/types/range/module.f.js +2 -0
- package/types/range/test.f.d.ts +2 -0
- package/types/range/test.f.js +18 -0
- package/types/range_map/module.f.d.ts +14 -0
- package/types/range_map/module.f.js +51 -0
- package/types/range_map/test.f.d.ts +6 -0
- package/types/range_map/test.f.js +176 -0
- package/types/result/module.f.d.ts +7 -0
- package/types/result/module.f.js +8 -0
- package/types/sorted_list/module.f.d.ts +16 -0
- package/types/sorted_list/module.f.js +56 -0
- package/types/sorted_list/test.f.d.ts +5 -0
- package/types/sorted_list/test.f.js +64 -0
- package/types/sorted_set/module.f.d.ts +7 -0
- package/types/sorted_set/module.f.js +14 -0
- package/types/sorted_set/test.f.d.ts +6 -0
- package/types/sorted_set/test.f.js +78 -0
- package/types/string/module.f.d.ts +6 -0
- package/types/string/module.f.js +11 -0
- package/types/string/test.f.d.ts +15 -0
- package/types/string/test.f.js +58 -0
- package/types/string_set/module.f.d.ts +9 -0
- package/types/string_set/module.f.js +22 -0
- package/types/string_set/test.f.d.ts +5 -0
- package/types/string_set/test.f.js +65 -0
- package/.github/FUNDING.yml +0 -12
- package/.github/dependabot.yml +0 -11
- package/.github/workflows/ci.yml +0 -88
- package/.github/workflows/npm-publish.yml +0 -53
- package/CHANGELOG.md +0 -29
- package/Cargo.lock +0 -18
- package/Cargo.toml +0 -7
- package/com/README.md +0 -3
- package/com/cpp/README.md +0 -80
- package/com/cpp/module.f.ts +0 -180
- package/com/cpp/nanocom.hpp +0 -195
- package/com/cpp/testlib.f.ts +0 -8
- package/com/cs/module.f.ts +0 -145
- package/com/cs/testlib.f.ts +0 -8
- package/com/proposals.md +0 -28
- package/com/rust/module.f.ts +0 -287
- package/com/rust/nanocom/Cargo.lock +0 -7
- package/com/rust/nanocom/Cargo.toml +0 -15
- package/com/rust/nanocom/README.md +0 -56
- package/com/rust/nanocom/src/class.rs +0 -6
- package/com/rust/nanocom/src/cobject.rs +0 -90
- package/com/rust/nanocom/src/guid.rs +0 -15
- package/com/rust/nanocom/src/hresult.rs +0 -7
- package/com/rust/nanocom/src/interface.rs +0 -9
- package/com/rust/nanocom/src/iunknown.rs +0 -13
- package/com/rust/nanocom/src/lib.rs +0 -20
- package/com/rust/nanocom/src/object.rs +0 -34
- package/com/rust/nanocom/src/ref.rs +0 -57
- package/com/rust/nanocom/src/vmt.rs +0 -7
- package/com/rust/nanocom/tests/it.rs +0 -186
- package/com/rust/nanocom/tests/itmod.rs +0 -195
- package/com/rust/testlib.f.ts +0 -8
- package/com/test/build.f.ts +0 -111
- package/com/test/build.ts +0 -45
- package/com/test/cpp/main.cpp +0 -74
- package/com/test/cs/Program.cs +0 -31
- package/com/test/cs/cs.csproj +0 -16
- package/com/test/rust/Cargo.toml +0 -12
- package/com/test/rust/src/lib.rs +0 -56
- package/com/types/module.f.ts +0 -62
- package/commonjs/README.md +0 -94
- package/commonjs/build/module.f.ts +0 -100
- package/commonjs/build/test.f.ts +0 -107
- package/commonjs/module/module.f.ts +0 -41
- package/commonjs/module.f.ts +0 -7
- package/commonjs/module.ts +0 -31
- package/commonjs/package/dependencies/module.f.ts +0 -22
- package/commonjs/package/dependencies/test.f.ts +0 -8
- package/commonjs/package/module.f.ts +0 -31
- package/commonjs/package/test.f.ts +0 -12
- package/commonjs/path/README.md +0 -17
- package/commonjs/path/module.f.ts +0 -171
- package/commonjs/test.ts +0 -64
- package/crypto/README.md +0 -3
- package/crypto/prime_field/module.f.ts +0 -114
- package/crypto/prime_field/test.f.ts +0 -95
- package/crypto/secp/module.f.ts +0 -182
- package/crypto/secp/test.f.ts +0 -68
- package/crypto/sha2/module.f.ts +0 -215
- package/crypto/sha2/test.f.ts +0 -83
- package/deno.json +0 -71
- package/dev/README.md +0 -8
- package/dev/index.ts +0 -3
- package/dev/module.f.ts +0 -1
- package/dev/module.ts +0 -195
- package/dev/test/module.f.ts +0 -135
- package/dev/test.ts +0 -53
- package/djs/README.md +0 -54
- package/djs/module.f.ts +0 -76
- package/djs/parser/module.f.ts +0 -509
- package/djs/parser/test.f.ts +0 -461
- package/djs/serializer/module.f.ts +0 -90
- package/djs/test.f.ts +0 -67
- package/djs/tokenizer/module.f.ts +0 -99
- package/djs/tokenizer/test.f.ts +0 -364
- package/doc/LANGUAGE.md +0 -255
- package/doc/README.md +0 -61
- package/doc/byte-code.md +0 -59
- package/doc/fa.md +0 -174
- package/doc/predefined.md +0 -143
- package/doc/proposals.md +0 -21
- package/doc/vm/README.md +0 -24
- package/doc/vm-rearchitecture.md +0 -129
- package/doc/vm.md +0 -150
- package/fsc/README.md +0 -111
- package/fsc/module.f.ts +0 -122
- package/fsc/test.f.ts +0 -21
- package/fsm/README.md +0 -113
- package/fsm/module.f.ts +0 -107
- package/fsm/test.f.ts +0 -139
- package/funding.json +0 -61
- package/html/README.md +0 -32
- package/html/module.f.ts +0 -109
- package/html/test.f.ts +0 -37
- package/issues/01-test-debug.md +0 -3
- package/issues/02-esm.md +0 -8
- package/issues/03-djs.md +0 -57
- package/issues/05-publish.md +0 -40
- package/issues/11-fs-load.md +0 -13
- package/issues/17-djs-extension.md +0 -6
- package/issues/README.md +0 -42
- package/issues/lang/1000-json.md +0 -50
- package/issues/lang/2110-default-export.md +0 -11
- package/issues/lang/2120-const.md +0 -14
- package/issues/lang/2130-default-import.md +0 -10
- package/issues/lang/2210-block-comment.md +0 -12
- package/issues/lang/2220-namespace-import.md +0 -25
- package/issues/lang/2310-undefined.md +0 -7
- package/issues/lang/2320-bigint.md +0 -7
- package/issues/lang/2330-property-accessor.md +0 -225
- package/issues/lang/2340-operators.md +0 -41
- package/issues/lang/2350-grouping.md +0 -11
- package/issues/lang/2360-built-in.md +0 -81
- package/issues/lang/2410-identifier-property.md +0 -9
- package/issues/lang/2420-line-comment.md +0 -10
- package/issues/lang/2430-trailing-comma.md +0 -13
- package/issues/lang/2440-shorthand.md +0 -8
- package/issues/lang/2450-destructuring.md +0 -12
- package/issues/lang/3110-function.md +0 -35
- package/issues/lang/3120-parameters.md +0 -9
- package/issues/lang/3130-body-const.md +0 -12
- package/issues/lang/3220-let.md +0 -11
- package/issues/lang/3240-export.md +0 -44
- package/issues/lang/3370-type-inference.md +0 -69
- package/issues/lang/3380-promise.md +0 -22
- package/issues/lang/3390-class.md +0 -3
- package/issues/lang/3410-expression.md +0 -12
- package/issues/lang/3420-one-parameter.md +0 -10
- package/issues/lang/3430-assignments.md +0 -23
- package/issues/lang/README.md +0 -193
- package/issues/test.f.ts +0 -58
- package/js/tokenizer/module.f.ts +0 -882
- package/js/tokenizer/test.f.ts +0 -617
- package/json/html/README.md +0 -49
- package/json/module.f.ts +0 -94
- package/json/parser/module.f.ts +0 -221
- package/json/parser/test.f.ts +0 -255
- package/json/serializer/module.f.ts +0 -74
- package/json/serializer/test.f.ts +0 -64
- package/json/test.f.ts +0 -48
- package/json/tokenizer/module.f.ts +0 -85
- package/json/tokenizer/test.f.ts +0 -290
- package/nanvm-lib/Cargo.toml +0 -6
- package/nanvm-lib/src/extension.rs +0 -130
- package/nanvm-lib/src/interface.rs +0 -133
- package/nanvm-lib/src/lib.rs +0 -7
- package/nanvm-lib/src/naive.rs +0 -236
- package/nanvm-lib/src/nanenum.rs +0 -236
- package/nanvm-lib/src/nullish.rs +0 -7
- package/nanvm-lib/src/sign.rs +0 -5
- package/nanvm-lib/src/simple.rs +0 -32
- package/nanvm-lib/tests/test.f.ts +0 -80
- package/nanvm-lib/tests/test.rs +0 -108
- package/nodejs/version/main.ts +0 -4
- package/nodejs/version/module.f.ts +0 -42
- package/text/README.md +0 -110
- package/text/ascii/module.f.ts +0 -219
- package/text/ascii/test.f.ts +0 -14
- package/text/module.f.ts +0 -30
- package/text/sgr/README.md +0 -3
- package/text/sgr/module.f.ts +0 -11
- package/text/test.f.ts +0 -19
- package/text/utf16/module.f.ts +0 -120
- package/text/utf16/test.f.ts +0 -107
- package/text/utf8/module.f.ts +0 -116
- package/text/utf8/test.f.ts +0 -125
- package/tsconfig.json +0 -104
- package/types/array/module.f.ts +0 -89
- package/types/array/test.f.ts +0 -88
- package/types/bigfloat/module.f.ts +0 -93
- package/types/bigfloat/test.f.ts +0 -218
- package/types/bigint/README.md +0 -35
- package/types/bigint/test.f.ts +0 -144
- package/types/bit_vec/README.md +0 -18
- package/types/bit_vec/test.f.ts +0 -129
- package/types/btree/README.md +0 -160
- package/types/btree/find/module.f.ts +0 -92
- package/types/btree/find/test.f.ts +0 -122
- package/types/btree/module.f.ts +0 -35
- package/types/btree/remove/module.f.ts +0 -151
- package/types/btree/remove/test.f.ts +0 -498
- package/types/btree/set/module.f.ts +0 -89
- package/types/btree/set/test.f.ts +0 -415
- package/types/btree/test.f.ts +0 -92
- package/types/btree/types/module.f.ts +0 -27
- package/types/byte_set/module.f.ts +0 -73
- package/types/byte_set/test.f.ts +0 -84
- package/types/function/compare/module.f.ts +0 -26
- package/types/function/compare/test.f.ts +0 -7
- package/types/function/module.f.ts +0 -43
- package/types/function/operator/module.f.ts +0 -65
- package/types/function/test.f.ts +0 -20
- package/types/list/module.f.ts +0 -350
- package/types/list/test.f.ts +0 -327
- package/types/map/module.f.ts +0 -65
- package/types/map/test.f.ts +0 -76
- package/types/nibble_set/module.f.ts +0 -34
- package/types/nibble_set/test.f.ts +0 -57
- package/types/nullable/module.f.ts +0 -9
- package/types/nullable/test.f.ts +0 -9
- package/types/number/module.f.ts +0 -20
- package/types/number/test.f.ts +0 -194
- package/types/object/module.f.ts +0 -30
- package/types/object/test.f.ts +0 -14
- package/types/range/module.f.ts +0 -10
- package/types/range/test.f.ts +0 -9
- package/types/range_map/module.f.ts +0 -70
- package/types/range_map/test.f.ts +0 -189
- package/types/result/module.f.ts +0 -20
- package/types/result/module.ts +0 -18
- package/types/sorted_list/module.f.ts +0 -83
- package/types/sorted_list/test.f.ts +0 -57
- package/types/sorted_set/module.f.ts +0 -36
- package/types/sorted_set/test.f.ts +0 -67
- package/types/string/module.f.ts +0 -26
- package/types/string/test.f.ts +0 -43
- package/types/string_set/module.f.ts +0 -37
- package/types/string_set/test.f.ts +0 -34
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import * as _ from "./module.f.js";
|
|
2
|
+
import * as list from "../list/module.f.js";
|
|
3
|
+
const { every, countdown, map, toArray } = list;
|
|
4
|
+
import * as json from "../../json/module.f.js";
|
|
5
|
+
import * as o from "../object/module.f.js";
|
|
6
|
+
const { sort } = o;
|
|
7
|
+
const stringify = json.stringify(sort);
|
|
8
|
+
export default {
|
|
9
|
+
has: [
|
|
10
|
+
() => {
|
|
11
|
+
if (_.has(0)(_.empty)) {
|
|
12
|
+
throw _.empty;
|
|
13
|
+
}
|
|
14
|
+
if (_.has(1)(_.empty)) {
|
|
15
|
+
throw _.empty;
|
|
16
|
+
}
|
|
17
|
+
if (_.has(33)(_.empty)) {
|
|
18
|
+
throw _.empty;
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
() => {
|
|
22
|
+
const s = _.set(0)(_.empty);
|
|
23
|
+
if (s !== 1n) {
|
|
24
|
+
throw s;
|
|
25
|
+
}
|
|
26
|
+
if (!_.has(0)(s)) {
|
|
27
|
+
throw s;
|
|
28
|
+
}
|
|
29
|
+
if (_.has(1)(s)) {
|
|
30
|
+
throw s;
|
|
31
|
+
}
|
|
32
|
+
if (_.has(33)(s)) {
|
|
33
|
+
throw s;
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
() => {
|
|
37
|
+
const s = _.set(33)(_.empty);
|
|
38
|
+
if (s !== 8589934592n) {
|
|
39
|
+
throw s;
|
|
40
|
+
}
|
|
41
|
+
if (_.has(0)(s)) {
|
|
42
|
+
throw s;
|
|
43
|
+
}
|
|
44
|
+
if (_.has(1)(s)) {
|
|
45
|
+
throw s;
|
|
46
|
+
}
|
|
47
|
+
if (!_.has(33)(s)) {
|
|
48
|
+
throw s;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
],
|
|
52
|
+
setRange: () => {
|
|
53
|
+
const result = _.setRange([2, 5])(_.empty);
|
|
54
|
+
if (result !== 60n) {
|
|
55
|
+
throw result;
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
unset: [
|
|
59
|
+
() => {
|
|
60
|
+
const a = _.set(0)(_.empty);
|
|
61
|
+
const result = _.unset(0)(a);
|
|
62
|
+
if (result !== 0n) {
|
|
63
|
+
throw result;
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
() => {
|
|
67
|
+
const a = _.set(255)(_.empty);
|
|
68
|
+
const result = _.unset(255)(a);
|
|
69
|
+
if (result !== 0n) {
|
|
70
|
+
throw result;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
universe: () => {
|
|
75
|
+
const x = every(map((v) => _.has(v)(_.universe))(countdown(256)));
|
|
76
|
+
if (!x) {
|
|
77
|
+
throw x;
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
compliment: {
|
|
81
|
+
empty: () => {
|
|
82
|
+
const r = _.complement(_.empty);
|
|
83
|
+
if (r !== _.universe) {
|
|
84
|
+
throw r;
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
universe: () => {
|
|
88
|
+
const r = _.complement(_.universe);
|
|
89
|
+
if (r !== _.empty) {
|
|
90
|
+
throw r;
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
toRangeMap: [
|
|
95
|
+
() => {
|
|
96
|
+
const result = stringify(toArray(_.toRangeMap(_.empty)('a')));
|
|
97
|
+
if (result !== '[]') {
|
|
98
|
+
throw result;
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
() => {
|
|
102
|
+
const s = _.set(0)(_.empty);
|
|
103
|
+
const result = stringify(toArray(_.toRangeMap(s)('a')));
|
|
104
|
+
if (result !== '[[["a"],0]]') {
|
|
105
|
+
throw result;
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
() => {
|
|
109
|
+
const s = _.setRange([1, 2])(_.empty);
|
|
110
|
+
const result = stringify(toArray(_.toRangeMap(s)('a')));
|
|
111
|
+
if (result !== '[[[],0],[["a"],2]]') {
|
|
112
|
+
throw result;
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
() => {
|
|
116
|
+
const result = stringify(toArray(_.toRangeMap(_.universe)('a')));
|
|
117
|
+
if (result !== '[[["a"],255]]') {
|
|
118
|
+
throw result;
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
]
|
|
122
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as Array from '../../array/module.f.ts';
|
|
2
|
+
export type Index3 = Array.Index3;
|
|
3
|
+
export type Index5 = Array.Index5;
|
|
4
|
+
type Array2<T> = Array.Array2<T>;
|
|
5
|
+
export type Sign = -1 | 0 | 1;
|
|
6
|
+
export type Compare<T> = (_: T) => Sign;
|
|
7
|
+
export declare const index3: <T>(cmp: Compare<T>) => (value: T) => Index3;
|
|
8
|
+
export declare const index5: <T>(cmp: Compare<T>) => (v2: Array2<T>) => Index5;
|
|
9
|
+
export declare const unsafeCmp: <T>(a: T) => (b: T) => Sign;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as Array from "../../array/module.f.js";
|
|
2
|
+
export const index3 = cmp => value => (cmp(value) + 1);
|
|
3
|
+
export const index5 = cmp => ([v0, v1]) => {
|
|
4
|
+
const _0 = cmp(v0);
|
|
5
|
+
return (_0 <= 0 ? _0 + 1 : cmp(v1) + 3);
|
|
6
|
+
};
|
|
7
|
+
export const unsafeCmp = a => b => a < b ? -1 : a > b ? 1 : 0;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A generic function type.
|
|
3
|
+
*/
|
|
4
|
+
type Func<I, O> = (_: I) => O;
|
|
5
|
+
/**
|
|
6
|
+
* A postfix compose function.
|
|
7
|
+
*/
|
|
8
|
+
export declare const compose: <I, X>(g: Func<I, X>) => <O>(f: Func<X, O>) => Func<I, O>;
|
|
9
|
+
/**
|
|
10
|
+
* A generic identity function.
|
|
11
|
+
*/
|
|
12
|
+
export declare const identity: <T>(value: T) => T;
|
|
13
|
+
/**
|
|
14
|
+
* Flips the arguments of a curried function.
|
|
15
|
+
*/
|
|
16
|
+
export declare const flip: <A, B, C>(f: (a: A) => (b: B) => C) => (b: B) => (a: A) => C;
|
|
17
|
+
/**
|
|
18
|
+
* A functional utility type that enables seamless chaining of transformations.
|
|
19
|
+
*/
|
|
20
|
+
type Fn<I, O> = {
|
|
21
|
+
readonly result: Func<I, O>;
|
|
22
|
+
readonly then: <T>(g: Func<O, T>) => Fn<I, T>;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Creates an `Fn` instance from a function, enabling chaining of transformations.
|
|
26
|
+
*/
|
|
27
|
+
export declare const fn: <I, O>(f: (i: I) => O) => Fn<I, O>;
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A postfix compose function.
|
|
3
|
+
*/
|
|
4
|
+
export const compose = g => f => x => f(g(x));
|
|
5
|
+
/**
|
|
6
|
+
* A generic identity function.
|
|
7
|
+
*/
|
|
8
|
+
export const identity = value => value;
|
|
9
|
+
/**
|
|
10
|
+
* Flips the arguments of a curried function.
|
|
11
|
+
*/
|
|
12
|
+
export const flip = f => b => a => f(a)(b);
|
|
13
|
+
/**
|
|
14
|
+
* Creates an `Fn` instance from a function, enabling chaining of transformations.
|
|
15
|
+
*/
|
|
16
|
+
export const fn = result => ({
|
|
17
|
+
result,
|
|
18
|
+
then: g => fn(compose(result)(g))
|
|
19
|
+
});
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
type Binary<A, B, R> = (a: A) => (b: B) => R;
|
|
2
|
+
export type Fold<I, O> = Binary<I, O, O>;
|
|
3
|
+
export declare const join: (separator: string) => Reduce<string>;
|
|
4
|
+
export declare const concat: Reduce<string>;
|
|
5
|
+
export type Unary<T, R> = (value: T) => R;
|
|
6
|
+
export declare const logicalNot: Unary<boolean, boolean>;
|
|
7
|
+
export type Equal<T> = Binary<T, T, boolean>;
|
|
8
|
+
export declare const strictEqual: <T>(a: T) => (b: T) => boolean;
|
|
9
|
+
export type Scan<I, O> = (input: I) => readonly [O, Scan<I, O>];
|
|
10
|
+
export type StateScan<I, S, O> = (prior: S) => (input: I) => readonly [O, S];
|
|
11
|
+
export declare const stateScanToScan: <I, S, O>(op: StateScan<I, S, O>) => (prior: S) => Scan<I, O>;
|
|
12
|
+
export declare const foldToScan: <I, O>(fold: Fold<I, O>) => (prior: O) => Scan<I, O>;
|
|
13
|
+
export type Reduce<T> = Fold<T, T>;
|
|
14
|
+
export declare const reduceToScan: <T>(fold: Reduce<T>) => Scan<T, T>;
|
|
15
|
+
export declare const addition: Reduce<number>;
|
|
16
|
+
export declare const min: Reduce<number>;
|
|
17
|
+
export declare const max: Reduce<number>;
|
|
18
|
+
export declare const increment: (b: number) => number;
|
|
19
|
+
export declare const counter: () => (b: number) => number;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export const join = separator => value => prior => `${prior}${separator}${value}`;
|
|
2
|
+
export const concat = i => acc => `${acc}${i}`;
|
|
3
|
+
export const logicalNot = v => !v;
|
|
4
|
+
export const strictEqual = a => b => a === b;
|
|
5
|
+
export const stateScanToScan = op => prior => i => {
|
|
6
|
+
const [o, s] = op(prior)(i);
|
|
7
|
+
return [o, stateScanToScan(op)(s)];
|
|
8
|
+
};
|
|
9
|
+
export const foldToScan = fold => prior => i => {
|
|
10
|
+
const result = fold(i)(prior);
|
|
11
|
+
return [result, foldToScan(fold)(result)];
|
|
12
|
+
};
|
|
13
|
+
export const reduceToScan = op => init => [init, foldToScan(op)(init)];
|
|
14
|
+
export const addition = a => b => a + b;
|
|
15
|
+
export const min = a => b => a < b ? a : b;
|
|
16
|
+
export const max = a => b => a > b ? a : b;
|
|
17
|
+
export const increment = addition(1);
|
|
18
|
+
export const counter = () => increment;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as _ from "./module.f.js";
|
|
2
|
+
const { fn } = _;
|
|
3
|
+
export default () => {
|
|
4
|
+
const f = x => [x];
|
|
5
|
+
const g = ([x]) => [x.length];
|
|
6
|
+
const w = ([x]) => x;
|
|
7
|
+
const r = fn(f).then(g).then(w).result;
|
|
8
|
+
const result = r('hello');
|
|
9
|
+
if (result !== 5) {
|
|
10
|
+
throw r;
|
|
11
|
+
}
|
|
12
|
+
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { type Scan, type StateScan, type Fold, type Reduce, type Equal } from '../function/operator/module.f.ts';
|
|
2
|
+
export type List<T> = NotLazy<T> | Thunk<T>;
|
|
3
|
+
type NotLazy<T> = Result<T> | Concat<T> | readonly T[];
|
|
4
|
+
type Empty = null;
|
|
5
|
+
export type Result<T> = Empty | NonEmpty<T>;
|
|
6
|
+
export type Thunk<T> = () => List<T>;
|
|
7
|
+
type NonEmpty<T> = {
|
|
8
|
+
readonly first: T;
|
|
9
|
+
readonly tail: List<T>;
|
|
10
|
+
};
|
|
11
|
+
type Concat<T> = {
|
|
12
|
+
readonly head: List<T>;
|
|
13
|
+
readonly tail: List<T>;
|
|
14
|
+
};
|
|
15
|
+
export declare const concat: <T>(head: List<T>) => (tail: List<T>) => List<T>;
|
|
16
|
+
export declare const next: <T>(list: List<T>) => Result<T>;
|
|
17
|
+
export declare const iterable: <T>(list: List<T>) => Iterable<T>;
|
|
18
|
+
export declare const toArray: <T>(list: List<T>) => readonly T[];
|
|
19
|
+
export declare const flat: <T>(list: List<List<T>>) => Thunk<T>;
|
|
20
|
+
export declare const map: <I, O>(f: (value: I) => O) => (input: List<I>) => Thunk<O>;
|
|
21
|
+
export declare const flatMap: <I, O>(f: (value: I) => List<O>) => (input: List<I>) => Thunk<O>;
|
|
22
|
+
export declare const filter: <T>(f: (value: T) => boolean) => (input: List<T>) => Thunk<T>;
|
|
23
|
+
export declare const filterMap: <I, O>(f: (value: I) => O | null) => (input: List<I>) => Thunk<O>;
|
|
24
|
+
export declare const takeWhile: <T>(f: (value: T) => boolean) => (input: List<T>) => Thunk<T>;
|
|
25
|
+
export declare const take: (n: number) => <T>(input: List<T>) => Thunk<T>;
|
|
26
|
+
export declare const dropWhile: <T>(f: (value: T) => boolean) => (input: List<T>) => Thunk<T>;
|
|
27
|
+
export declare const drop: (n: number) => <T>(input: List<T>) => Thunk<T>;
|
|
28
|
+
export declare const first: <D>(def: D) => <T>(input: List<T>) => D | T;
|
|
29
|
+
export declare const last: <D>(first: D) => <T>(tail: List<T>) => D | T;
|
|
30
|
+
export declare const find: <D>(def: D) => <T>(f: (value: T) => boolean) => (input: List<T>) => D | T;
|
|
31
|
+
export declare const some: (input: List<boolean>) => boolean;
|
|
32
|
+
export declare const isEmpty: <T>(input: List<T>) => boolean;
|
|
33
|
+
export declare const every: (_: List<boolean>) => boolean;
|
|
34
|
+
export declare const includes: <T>(value: T) => (sequence: List<T>) => boolean;
|
|
35
|
+
export declare const countdown: (count: number) => Thunk<number>;
|
|
36
|
+
export declare const repeat: <T>(v: T) => (c: number) => Thunk<T>;
|
|
37
|
+
export declare const cycle: <T>(list: List<T>) => List<T>;
|
|
38
|
+
export declare const scan: <I, O>(op: Scan<I, O>) => (input: List<I>) => Thunk<O>;
|
|
39
|
+
export declare const stateScan: <I, S, O>(op: StateScan<I, S, O>) => (init: S) => (input: List<I>) => Thunk<O>;
|
|
40
|
+
export declare const foldScan: <I, O>(op: Fold<I, O>) => (init: O) => (input: List<I>) => Thunk<O>;
|
|
41
|
+
export declare const fold: <I, O>(op: Fold<I, O>) => (init: O) => (input: List<I>) => O;
|
|
42
|
+
export declare const reduce: <T>(op: Reduce<T>) => <D>(def: D) => (input: List<T>) => D | T;
|
|
43
|
+
export declare const length: <T>(input: List<T>) => number;
|
|
44
|
+
export type Entry<T> = readonly [number, T];
|
|
45
|
+
export declare const entries: <T>(input: List<T>) => Thunk<Entry<T>>;
|
|
46
|
+
export declare const reverse: <T>(input: List<T>) => List<T>;
|
|
47
|
+
export declare const zip: <A>(a: List<A>) => <B>(b: List<B>) => Thunk<readonly [A, B]>;
|
|
48
|
+
export declare const equal: <T>(e: Equal<T>) => (a: List<T>) => (b: List<T>) => boolean;
|
|
49
|
+
export declare const empty: null;
|
|
50
|
+
export {};
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { identity, fn, compose } from "../function/module.f.js";
|
|
2
|
+
import { addition, logicalNot, strictEqual, stateScanToScan, foldToScan, reduceToScan, } from "../function/operator/module.f.js";
|
|
3
|
+
const fromArray = array => {
|
|
4
|
+
const at = i => i < array.length ? { first: array[i], tail: () => at(i + 1) } : null;
|
|
5
|
+
return at(0);
|
|
6
|
+
};
|
|
7
|
+
export const concat = head => tail => tail === null ? head : ({ head, tail });
|
|
8
|
+
const trampoline = list => {
|
|
9
|
+
while (typeof list === 'function') {
|
|
10
|
+
list = list();
|
|
11
|
+
}
|
|
12
|
+
return list;
|
|
13
|
+
};
|
|
14
|
+
export const next = head => {
|
|
15
|
+
let tail = null;
|
|
16
|
+
while (true) {
|
|
17
|
+
head = trampoline(head);
|
|
18
|
+
if (head instanceof Array) {
|
|
19
|
+
head = fromArray(head);
|
|
20
|
+
}
|
|
21
|
+
else if (head !== null && 'head' in head) {
|
|
22
|
+
[head, tail] = [head.head, concat(head.tail)(tail)];
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
if (head !== null) {
|
|
26
|
+
return { first: head.first, tail: concat(head.tail)(tail) };
|
|
27
|
+
}
|
|
28
|
+
if (tail === null) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
[head, tail] = [tail, null];
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
export const iterable = list => ({
|
|
35
|
+
*[Symbol.iterator]() {
|
|
36
|
+
let i = list;
|
|
37
|
+
while (true) {
|
|
38
|
+
const r = next(i);
|
|
39
|
+
if (r === null) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
yield r.first;
|
|
43
|
+
i = r.tail;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
const { from } = Array;
|
|
48
|
+
export const toArray = list => {
|
|
49
|
+
const u = trampoline(list);
|
|
50
|
+
return u instanceof Array ? u : from(iterable(u));
|
|
51
|
+
};
|
|
52
|
+
const apply = f => input => () => {
|
|
53
|
+
const n = next(input);
|
|
54
|
+
if (n === null) {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
return f(n);
|
|
58
|
+
};
|
|
59
|
+
const flatStep = ({ first, tail }) => concat(first)(flat(tail));
|
|
60
|
+
export const flat = apply(flatStep);
|
|
61
|
+
const mapStep = f => ({ first, tail }) => ({ first: f(first), tail: map(f)(tail) });
|
|
62
|
+
export const map = f => apply(mapStep(f));
|
|
63
|
+
export const flatMap = f => compose(map(f))(flat);
|
|
64
|
+
const filterStep = f => ({ first, tail }) => {
|
|
65
|
+
const newTail = filter(f)(tail);
|
|
66
|
+
return f(first) ? { first, tail: newTail } : newTail;
|
|
67
|
+
};
|
|
68
|
+
export const filter = f => apply(filterStep(f));
|
|
69
|
+
const filterMapStep = f => n => {
|
|
70
|
+
const [first, tail] = [f(n.first), filterMap(f)(n.tail)];
|
|
71
|
+
return first === null ? tail : { first, tail };
|
|
72
|
+
};
|
|
73
|
+
export const filterMap = f => apply(filterMapStep(f));
|
|
74
|
+
const takeWhileStep = f => ({ first, tail }) => f(first) ? { first, tail: takeWhile(f)(tail) } : null;
|
|
75
|
+
export const takeWhile = f => apply(takeWhileStep(f));
|
|
76
|
+
const takeStep = n => ({ first, tail }) => 0 < n ? { first: first, tail: take(n - 1)(tail) } : null;
|
|
77
|
+
export const take = n => apply(takeStep(n));
|
|
78
|
+
const dropWhileStep = f => ne => f(ne.first) ? dropWhile(f)(ne.tail) : ne;
|
|
79
|
+
export const dropWhile = f => apply(dropWhileStep(f));
|
|
80
|
+
const dropStep = n => ne => 0 < n ? drop(n - 1)(ne.tail) : ne;
|
|
81
|
+
export const drop = n => apply(dropStep(n));
|
|
82
|
+
export const first = def => input => {
|
|
83
|
+
const ne = next(input);
|
|
84
|
+
return ne === null ? def : ne.first;
|
|
85
|
+
};
|
|
86
|
+
export const last = first => tail => {
|
|
87
|
+
let i = { first, tail };
|
|
88
|
+
while (true) {
|
|
89
|
+
const result = next(i.tail);
|
|
90
|
+
if (result === null) {
|
|
91
|
+
return i.first;
|
|
92
|
+
}
|
|
93
|
+
i = result;
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
export const find = def => f => compose(filter(f))(first(def));
|
|
97
|
+
export const some = find(false)(identity);
|
|
98
|
+
export const isEmpty = fn(map(() => true))
|
|
99
|
+
.then(some)
|
|
100
|
+
.then(logicalNot)
|
|
101
|
+
.result;
|
|
102
|
+
export const every = fn(map(logicalNot))
|
|
103
|
+
.then(some)
|
|
104
|
+
.then(logicalNot)
|
|
105
|
+
.result;
|
|
106
|
+
export const includes = value => compose(map(strictEqual(value)))(some);
|
|
107
|
+
export const countdown = count => () => {
|
|
108
|
+
if (count <= 0) {
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
const first = count - 1;
|
|
112
|
+
return { first, tail: countdown(first) };
|
|
113
|
+
};
|
|
114
|
+
export const repeat = v => compose(countdown)(map(() => v));
|
|
115
|
+
export const cycle = list => () => {
|
|
116
|
+
const i = next(list);
|
|
117
|
+
return i === null ? null : { first: i.first, tail: concat(i.tail)(cycle(list)) };
|
|
118
|
+
};
|
|
119
|
+
const scanStep = op => ne => {
|
|
120
|
+
const [first, newOp] = op(ne.first);
|
|
121
|
+
return { first, tail: scan(newOp)(ne.tail) };
|
|
122
|
+
};
|
|
123
|
+
export const scan = op => apply(scanStep(op));
|
|
124
|
+
export const stateScan = op => compose(stateScanToScan(op))(scan);
|
|
125
|
+
export const foldScan = op => compose(foldToScan(op))(scan);
|
|
126
|
+
export const fold = op => init => compose(foldScan(op)(init))(last(init));
|
|
127
|
+
export const reduce = op => def => compose(scan(reduceToScan(op)))(last(def));
|
|
128
|
+
const lengthList = list => () => {
|
|
129
|
+
const notLazy = trampoline(list);
|
|
130
|
+
if (notLazy === null) {
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
if (notLazy instanceof Array) {
|
|
134
|
+
return [notLazy.length];
|
|
135
|
+
}
|
|
136
|
+
const tail = lengthList(notLazy.tail);
|
|
137
|
+
if ('first' in notLazy) {
|
|
138
|
+
return { first: 1, tail };
|
|
139
|
+
}
|
|
140
|
+
return { head: lengthList(notLazy.head), tail };
|
|
141
|
+
};
|
|
142
|
+
const sum = reduce(addition)(0);
|
|
143
|
+
export const length = input => sum(lengthList(input));
|
|
144
|
+
const entryOperator = index => value => [[index, value], index + 1];
|
|
145
|
+
export const entries = input => {
|
|
146
|
+
const o = entryOperator;
|
|
147
|
+
return stateScan(o)(0)(input);
|
|
148
|
+
};
|
|
149
|
+
const reverseOperator = first => tail => ({ first, tail });
|
|
150
|
+
export const reverse = fold(reverseOperator)(null);
|
|
151
|
+
export const zip = a => b => () => {
|
|
152
|
+
const aResult = next(a);
|
|
153
|
+
if (aResult === null) {
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
const bResult = next(b);
|
|
157
|
+
if (bResult === null) {
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
return { first: [aResult.first, bResult.first], tail: zip(aResult.tail)(bResult.tail) };
|
|
161
|
+
};
|
|
162
|
+
export const equal = e => {
|
|
163
|
+
const f = a => b => () => {
|
|
164
|
+
const [aResult, bResult] = [next(a), next(b)];
|
|
165
|
+
return aResult === null || bResult === null
|
|
166
|
+
? { first: aResult === bResult, tail: null }
|
|
167
|
+
: { first: e(aResult.first)(bResult.first), tail: f(aResult.tail)(bResult.tail) };
|
|
168
|
+
};
|
|
169
|
+
return a => b => every(f(a)(b));
|
|
170
|
+
};
|
|
171
|
+
export const empty = null;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
stringifyTest: () => void;
|
|
3
|
+
cycle: () => void;
|
|
4
|
+
countdown: () => void;
|
|
5
|
+
flat: () => void;
|
|
6
|
+
concat: () => void;
|
|
7
|
+
flatMap: () => void;
|
|
8
|
+
take: (() => void)[];
|
|
9
|
+
find: (() => void)[];
|
|
10
|
+
takeWhile: (() => void)[];
|
|
11
|
+
dropWhile: () => void;
|
|
12
|
+
drop: (() => void)[];
|
|
13
|
+
additionTests: (() => void)[];
|
|
14
|
+
entries: (() => void)[];
|
|
15
|
+
reverse: (() => void)[];
|
|
16
|
+
zip: (() => void)[];
|
|
17
|
+
logic: () => (() => void)[];
|
|
18
|
+
strictEqual: (() => void)[];
|
|
19
|
+
isEmpty: (() => void)[];
|
|
20
|
+
length: () => void;
|
|
21
|
+
};
|
|
22
|
+
export default _default;
|