freelang-editor 11.7.4
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/.config/jest.config.js +47 -0
- package/.config/jest.fast.config.js +9 -0
- package/.config/openapi.yaml +457 -0
- package/.config/tsconfig.json +30 -0
- package/.github/CODE_OF_CONDUCT.md +176 -0
- package/.github/CONTRIBUTING.md +296 -0
- package/.github/DISCUSSIONS.md +179 -0
- package/.github/ISSUE_TEMPLATE/bug-report.md +44 -0
- package/.github/ISSUE_TEMPLATE/feature-request.md +39 -0
- package/.github/pull_request_template.md +87 -0
- package/.github/workflows/phase-3c-l2-proof.yml +101 -0
- package/.github/workflows/phase-c-full-slack.yml +409 -0
- package/.github/workflows/phase-c-full.yml +241 -0
- package/.github/workflows/phase-c-scan.yml +64 -0
- package/.gitmodules +3 -0
- package/.tmp.js +3 -0
- package/CHANGELOG.md +1182 -0
- package/CLAUDE.md +633 -0
- package/Dockerfile +3 -0
- package/LICENSE +21 -0
- package/MISTAKES-COVERAGE.json +115 -0
- package/Makefile +95 -0
- package/PHASE-F-ROADMAP.md +554 -0
- package/README.md +459 -0
- package/SELF_HOSTING_CHECKLIST.md +155 -0
- package/benchmark-freelang.fl +47 -0
- package/benchmark-results.json +37 -0
- package/benchmark-simple.fl +38 -0
- package/bin/freelang-migrate +310 -0
- package/bin/freelang-smart +258 -0
- package/bootstrap.js +1134 -0
- package/docker-compose.yml +3 -0
- package/docs/AI_FRIENDLINESS.md +181 -0
- package/docs/AI_LEARNING_PATH.md +542 -0
- package/docs/AI_MAINTENANCE.md +153 -0
- package/docs/AI_QUICKSTART.md +380 -0
- package/docs/AI_REFERENCE.md +559 -0
- package/docs/AI_RELIABILITY_GUIDE.md +597 -0
- package/docs/AKL_ARCHITECTURE.md +228 -0
- package/docs/AKL_P0_KIMDB.md +215 -0
- package/docs/API.md +380 -0
- package/docs/ARCHITECTURE.md +208 -0
- package/docs/CHANGELOG.md +1014 -0
- package/docs/CLAUDE.md +991 -0
- package/docs/CLAUDE_AI.md +210 -0
- package/docs/CODEGEN_IMPROVEMENTS.md +158 -0
- package/docs/CODE_OF_CONDUCT.md +337 -0
- package/docs/CONTRIBUTING.md +437 -0
- package/docs/CRON_AUTOMATION.md +97 -0
- package/docs/DEPLOYMENT.md +357 -0
- package/docs/DETERMINISM_GUIDE.md +174 -0
- package/docs/HUMAN_GUIDE.md +599 -0
- package/docs/INDEX.md +199 -0
- package/docs/INLINE_TEST_GUIDE.md +231 -0
- package/docs/LANGUAGE-FAULTS.md +583 -0
- package/docs/LANGUAGE_IMPROVEMENT_REQUESTS.md +187 -0
- package/docs/LEARNING.md +257 -0
- package/docs/MISTAKES-100.md +52 -0
- package/docs/MISTAKES.md +131 -0
- package/docs/NAMING_CONVENTIONS.md +158 -0
- package/docs/NIGHTLY-MONITORING.md +222 -0
- package/docs/OFFICIAL_LANGUAGE.md +249 -0
- package/docs/ONBOARDING_1HOUR.md +210 -0
- package/docs/PERFORMANCE.md +329 -0
- package/docs/PHASE-3C-L2-PROOF-PLAN.md +282 -0
- package/docs/PHASE-3C-L2-RESULTS.md +183 -0
- package/docs/PHASE-3D-AI-LIBRARY.md +170 -0
- package/docs/PHASE-3E-VM-OPTIMIZATION.md +192 -0
- package/docs/PHASE-C-CI.md +242 -0
- package/docs/PHASE-C-PR-CHECKLIST.md +267 -0
- package/docs/PHASE-C-ROADMAP.md +141 -0
- package/docs/PHASE-C-SCAN.md +205 -0
- package/docs/PHASE-G-ROADMAP.md +228 -0
- package/docs/PHASE-X-V11.5-ROADMAP.md +267 -0
- package/docs/PHASE4_IMPLEMENTATION_PLAN.md +290 -0
- package/docs/PHASE5-COMPLETION.md +186 -0
- package/docs/PHASE5-SUMMARY.md +82 -0
- package/docs/PLUGIN_GUIDE.md +241 -0
- package/docs/PROJECT_OVERVIEW_KO.md +66 -0
- package/docs/QUICKSTART.md +160 -0
- package/docs/README.md +192 -0
- package/docs/RESERVED.md +125 -0
- package/docs/ROADMAP.md +191 -0
- package/docs/SECURITY.md +518 -0
- package/docs/SETUP.md +127 -0
- package/docs/SLACK-SETUP.md +190 -0
- package/docs/STATE_OF_V11.md +74 -0
- package/docs/STDLIB_NAMING_AUDIT.md +154 -0
- package/docs/STDLIB_REFERENCE.md +2722 -0
- package/docs/STYLE_GUIDE.md +559 -0
- package/docs/TASK5-MAP-DESTRUCTURE-DESIGN.md +136 -0
- package/docs/TOOLS.md +357 -0
- package/docs/TYPE_SYSTEM_GUIDE.md +201 -0
- package/docs/UI-PATTERN.md +265 -0
- package/docs/V11.5-RULES.md +416 -0
- package/docs/V11.6-HARNESS-RULES.md +222 -0
- package/docs/V11.6-MULTI-AGENT-PLAN.md +265 -0
- package/docs/V11.6-STABILIZATION-PLAN.md +290 -0
- package/docs/Y4-2B_DRY_RUN.md +142 -0
- package/docs/_classifications.json +882 -0
- package/docs/api/stdlib.md +134 -0
- package/docs/blog/2026-04-17-v11-ai-first-evolution.md +223 -0
- package/docs/blog/2026-04-20-self-hosting-fixedpoint.md +269 -0
- package/docs/blog/2026-05-04-mistakes-are-language-faults.md +267 -0
- package/docs/blog/2026-05-04-mistakes-coverage-honest.md +170 -0
- package/docs/blog/2026-05-04-phase-g-followup-smart-wrapper.md +188 -0
- package/docs/blog/2026-05-04-phase-g-mistakes-100.md +269 -0
- package/docs/blog/2026-05-04-phase-x-v11.5-launch.md +224 -0
- package/docs/blog/2026-05-04-v11.5.0-real-language-change.md +252 -0
- package/docs/blog-demo/README.md +44 -0
- package/docs/examples/index.md +78 -0
- package/docs/examples/todo-app.md +99 -0
- package/docs/guide/ai-blocks.md +335 -0
- package/docs/guide/basics.md +235 -0
- package/docs/guide/frameworks.md +319 -0
- package/docs/homepage/README.md +164 -0
- package/docs/index.md +183 -0
- package/docs/v12-DESIGN.md +214 -0
- package/examples/README.md +26 -0
- package/examples/browser-test.html +149 -0
- package/examples/csv-tool/analyze.fl +222 -0
- package/examples/csv-tool/employees.csv +16 -0
- package/examples/csv-tool/products.csv +21 -0
- package/examples/factorial.fl +9 -0
- package/examples/fib30.fl +4 -0
- package/examples/hello.fl +2 -0
- package/examples/hello.fl.js +3 -0
- package/examples/learning-session/01-grade-stats.fl +49 -0
- package/examples/learning-session/02-class-stats.fl +52 -0
- package/examples/learning-session/03-cart.fl +61 -0
- package/examples/learning-session/04-word-freq.fl +57 -0
- package/examples/learning-session/05-todo.fl +69 -0
- package/examples/learning-session/06-library.fl +76 -0
- package/examples/learning-session/07-currency.fl +99 -0
- package/examples/learning-session/08-csv-grades.fl +104 -0
- package/examples/learning-session/09-calc-repl.fl +92 -0
- package/examples/learning-session/10-contacts.fl +109 -0
- package/examples/learning-session/11-markdown.fl +107 -0
- package/examples/learning-session/12-calendar.fl +87 -0
- package/examples/learning-session/13-statistics.fl +123 -0
- package/examples/learning-session/14-primes.fl +107 -0
- package/examples/learning-session/15-statistics.fl +123 -0
- package/examples/learning-session/16-calendar.fl +87 -0
- package/examples/learning-session/17-markdown.fl +107 -0
- package/examples/learning-session/18-contacts.fl +109 -0
- package/examples/learning-session/19-json-serializer.fl +86 -0
- package/examples/learning-session/20-template.fl +201 -0
- package/examples/learning-session/21-calc-parser.fl +148 -0
- package/examples/learning-session/22-table.fl +96 -0
- package/examples/patterns/01-map-filter-reduce.fl +50 -0
- package/examples/patterns/02-error-handling.fl +51 -0
- package/examples/patterns/03-type-validation.fl +57 -0
- package/examples/patterns/04-state-management.fl +44 -0
- package/examples/patterns/05-api-integration.fl +95 -0
- package/examples/patterns/06-database-operations.fl +113 -0
- package/examples/patterns/07-string-processing.fl +86 -0
- package/examples/patterns/08-data-transformation.fl +92 -0
- package/examples/patterns/09-decision-logic.fl +122 -0
- package/examples/patterns/10-agent-orchestration.fl +184 -0
- package/examples/patterns/README.md +344 -0
- package/examples/simple-server.fl +29 -0
- package/examples/tables-app.fl +219 -0
- package/examples/test-libs.fl +272 -0
- package/jest.config.js +4 -0
- package/lib/datetime.fl +123 -0
- package/lib/http-client.fl +129 -0
- package/lib/pipeline.fl +150 -0
- package/lib/query.fl +160 -0
- package/lib/result.fl +124 -0
- package/lib/template.fl +161 -0
- package/lib/validate.fl +136 -0
- package/package.json +58 -0
- package/scripts/ai-eval.js +318 -0
- package/scripts/ai-self-verify.js +200 -0
- package/scripts/ai-validate.js +302 -0
- package/scripts/bench.sh +71 -0
- package/scripts/benchmark.js +258 -0
- package/scripts/benchmark.sh +99 -0
- package/scripts/build-binary.sh +68 -0
- package/scripts/build-runtime.sh +46 -0
- package/scripts/build-stage1-final.sh +58 -0
- package/scripts/build-stage1.sh +119 -0
- package/scripts/build-standalone.sh +17 -0
- package/scripts/build.js +130 -0
- package/scripts/check-let-regressions.js +95 -0
- package/scripts/check-parens.py +117 -0
- package/scripts/check-ports.sh +49 -0
- package/scripts/check-syntax.js +30 -0
- package/scripts/cli-extras.js +135 -0
- package/scripts/cron-daily-verify.sh +101 -0
- package/scripts/deploy.sh +91 -0
- package/scripts/dev.sh +37 -0
- package/scripts/extract-fl-examples.js +29 -0
- package/scripts/extract-runtime-helpers.js +122 -0
- package/scripts/fl-compile.sh +14 -0
- package/scripts/fl-fixpoint.sh +28 -0
- package/scripts/fl-repl.sh +21 -0
- package/scripts/fl-run.sh +41 -0
- package/scripts/fl-serve.sh +25 -0
- package/scripts/fuzz-compiler.js +92 -0
- package/scripts/gen-ai-prompt.js +340 -0
- package/scripts/gen-fixtures.js +166 -0
- package/scripts/gen-mistakes-split.js +199 -0
- package/scripts/gen-stdlib-docs.js +69 -0
- package/scripts/lint-stdlib-aliases.js +166 -0
- package/scripts/measure-baseline.sh +43 -0
- package/scripts/property-test.js +885 -0
- package/scripts/push-to-gogs.sh +60 -0
- package/scripts/regression-scan.js +132 -0
- package/scripts/run-jest-shard.sh +85 -0
- package/scripts/safe-push.sh +37 -0
- package/scripts/scan-fl-tokens.js +170 -0
- package/scripts/scan-for-fl-tokens.sh +17 -0
- package/scripts/self-diff.sh +95 -0
- package/scripts/snapshot-v0.sh +35 -0
- package/scripts/test-l2-fixpoint.sh +54 -0
- package/scripts/verify-all.sh +130 -0
- package/scripts/verify-build-deterministic.sh +110 -0
- package/scripts/verify-c7-bootstrap.sh +150 -0
- package/scripts/verify-c8-fixed-point-simple.sh +121 -0
- package/scripts/verify-c8-fixed-point.sh +133 -0
- package/scripts/verify-c9-fuzzing.sh +214 -0
- package/scripts/verify-fixed-point-deep.sh +133 -0
- package/scripts/verify-fixed-point.sh +65 -0
- package/scripts/verify-l2-proof.sh +153 -0
- package/scripts/verify-l3-proof.sh +40 -0
- package/scripts/verify-mistakes-coverage.js +120 -0
- package/scripts/verify-self-host.sh +509 -0
- package/self/CHANGELOG.md +964 -0
- package/self/COMPILER_REDESIGN_FAILURES.md +59 -0
- package/self/INTEGRATION-CHECKLIST.md +113 -0
- package/self/README.md +34 -0
- package/self/all.fl +1353 -0
- package/self/ast.fl +219 -0
- package/self/ast.self.js +47 -0
- package/self/bench/_bi_json-parse.js +46 -0
- package/self/bench/_bi_json-str.js +60 -0
- package/self/bench/_bi_list-distinct.js +37 -0
- package/self/bench/_bi_list-filter-even.js +56 -0
- package/self/bench/_bi_list-first.js +29 -0
- package/self/bench/_bi_list-last.js +28 -0
- package/self/bench/_bi_list-map-inc.js +41 -0
- package/self/bench/_bi_list-range.js +22 -0
- package/self/bench/_bi_list-reduce-sum.js +50 -0
- package/self/bench/_bi_list-reverse.js +28 -0
- package/self/bench/_bi_list-sort.js +35 -0
- package/self/bench/_bi_list-take.js +36 -0
- package/self/bench/_bi_m-abs.js +24 -0
- package/self/bench/_bi_m-floor.js +22 -0
- package/self/bench/_bi_m-max.js +26 -0
- package/self/bench/_bi_m-min.js +26 -0
- package/self/bench/_bi_m-mod.js +21 -0
- package/self/bench/_bi_map-has.js +50 -0
- package/self/bench/_bi_map-keys.js +50 -0
- package/self/bench/_bi_map-values.js +52 -0
- package/self/bench/_bi_str-concat.js +36 -0
- package/self/bench/_bi_str-contains.js +43 -0
- package/self/bench/_bi_str-ends.js +45 -0
- package/self/bench/_bi_str-index.js +34 -0
- package/self/bench/_bi_str-lower.js +23 -0
- package/self/bench/_bi_str-repeat.js +26 -0
- package/self/bench/_bi_str-split.js +41 -0
- package/self/bench/_bi_str-starts.js +47 -0
- package/self/bench/_bi_str-trim.js +26 -0
- package/self/bench/_bi_str-upper.js +23 -0
- package/self/bench/_bi_t-list.js +24 -0
- package/self/bench/_bi_t-null.js +23 -0
- package/self/bench/_bi_t-number.js +23 -0
- package/self/bench/_bi_t-string.js +25 -0
- package/self/bench/_bi_t-typeof.js +25 -0
- package/self/bench/_c_parse_probe.fl +426 -0
- package/self/bench/_c_parse_probe.js +67 -0
- package/self/bench/_codegen_nodrv.fl +751 -0
- package/self/bench/_combined2.fl +423 -0
- package/self/bench/_combined_arr.fl +422 -0
- package/self/bench/_combined_astprobe.fl +429 -0
- package/self/bench/_combined_astprobe.js +69 -0
- package/self/bench/_combined_cg.fl +424 -0
- package/self/bench/_combined_cg.js +64 -0
- package/self/bench/_combined_lex.fl +421 -0
- package/self/bench/_combined_trace.fl +435 -0
- package/self/bench/_combined_trace.js +75 -0
- package/self/bench/_ext_abs-neg.js +2 -0
- package/self/bench/_ext_and.js +2 -0
- package/self/bench/_ext_cond-1.js +2 -0
- package/self/bench/_ext_cond-2.js +2 -0
- package/self/bench/_ext_do-seq.js +2 -0
- package/self/bench/_ext_fact20.js +3 -0
- package/self/bench/_ext_fib25.js +3 -0
- package/self/bench/_ext_length.js +2 -0
- package/self/bench/_ext_let-1d.js +18 -0
- package/self/bench/_ext_let-2d.js +2 -0
- package/self/bench/_ext_list-sum.js +3 -0
- package/self/bench/_ext_math.js +2 -0
- package/self/bench/_ext_or.js +2 -0
- package/self/bench/_ext_str.js +2 -0
- package/self/bench/_fact15.js +2 -0
- package/self/bench/_fb_fact15.js +2 -0
- package/self/bench/_fb_func-fact.js +2 -0
- package/self/bench/_fb_func-multi.js +2 -0
- package/self/bench/_fb_func-mutual.js +3 -0
- package/self/bench/_fb_func-simple.js +21 -0
- package/self/bench/_fib.js +2 -0
- package/self/bench/_fn_async-await-seq.js +40 -0
- package/self/bench/_fn_async-await.js +3 -0
- package/self/bench/_fn_async-print.js +26 -0
- package/self/bench/_fn_async-result.js +1 -0
- package/self/bench/_fn_call-form.js +24 -0
- package/self/bench/_fn_compose.js +37 -0
- package/self/bench/_fn_pipe.js +34 -0
- package/self/bench/_fn_thread-first-sexpr.js +31 -0
- package/self/bench/_fn_thread-first.js +25 -0
- package/self/bench/_fn_thread-last.js +31 -0
- package/self/bench/_generated.js +35 -0
- package/self/bench/_mt_match-default.js +51 -0
- package/self/bench/_mt_match-num.js +58 -0
- package/self/bench/_mt_match-str.js +56 -0
- package/self/bench/_mt_match-var.js +32 -0
- package/self/bench/_mt_match-wild.js +36 -0
- package/self/bench/_mt_struct-make.js +81 -0
- package/self/bench/_mt_struct-tag.js +81 -0
- package/self/bench/_probe.fl +1 -0
- package/self/bench/_probe2.fl +1 -0
- package/self/bench/_probe3.fl +3 -0
- package/self/bench/_probe_apply.fl +1 -0
- package/self/bench/_probe_args.fl +7 -0
- package/self/bench/_probe_arr.fl +7 -0
- package/self/bench/_probe_arr2.fl +5 -0
- package/self/bench/_probe_block.fl +7 -0
- package/self/bench/_probe_call.fl +1 -0
- package/self/bench/_probe_cg.fl +27 -0
- package/self/bench/_probe_compose.fl +13 -0
- package/self/bench/_probe_define.fl +1 -0
- package/self/bench/_probe_keys.fl +5 -0
- package/self/bench/_probe_length.fl +5 -0
- package/self/bench/_probe_lexparse.fl +4 -0
- package/self/bench/_probe_loop.fl +12 -0
- package/self/bench/_probe_map.fl +8 -0
- package/self/bench/_probe_map2.fl +8 -0
- package/self/bench/_probe_map3.fl +5 -0
- package/self/bench/_probe_mapkeys.fl +5 -0
- package/self/bench/_probe_mapv12.fl +1 -0
- package/self/bench/_probe_mapv12.js +2 -0
- package/self/bench/_probe_match.fl +1 -0
- package/self/bench/_probe_match2.fl +1 -0
- package/self/bench/_probe_neg.fl +7 -0
- package/self/bench/_probe_neg2.fl +3 -0
- package/self/bench/_probe_protocol.fl +7 -0
- package/self/bench/_probe_self_parse.fl +6 -0
- package/self/bench/_probe_struct.fl +1 -0
- package/self/bench/_probe_true.fl +3 -0
- package/self/bench/_probe_true2.fl +6 -0
- package/self/bench/_probe_v12_cg.fl +7 -0
- package/self/bench/_probe_v12_extract.fl +8 -0
- package/self/bench/_probe_v12_extract.js +7 -0
- package/self/bench/_probe_v12_internal.fl +21 -0
- package/self/bench/_probe_v12_map_ast.fl +12 -0
- package/self/bench/_rs_combo.js +3 -0
- package/self/bench/_rs_gcd.js +36 -0
- package/self/bench/_rs_grade.js +2 -0
- package/self/bench/_rs_mutual-fib.js +2 -0
- package/self/bench/_rs_range-sum.js +2 -0
- package/self/bench/_rs_sum-10k.js +2 -0
- package/self/bench/_rs_sum-5k.js +2 -0
- package/self/bench/_sf_loop-fact-10.js +73 -0
- package/self/bench/_sf_loop-sum-10k.js +87 -0
- package/self/bench/_sf_set-x.js +40 -0
- package/self/bench/_sf_throw-catch.js +1 -0
- package/self/bench/_sf_while-5.js +62 -0
- package/self/bench/_v12_combined.fl +1184 -0
- package/self/bench/_v12_extract_test.fl +14 -0
- package/self/bench/_v12_extract_test.js +7 -0
- package/self/bench/_v12_inspect.js +26 -0
- package/self/bench/_v12_inspect_mod.js +137 -0
- package/self/bench/_v12_makevartest.fl +8 -0
- package/self/bench/_v12_makevartest.js +6 -0
- package/self/bench/_v12_parse_probe.fl +9 -0
- package/self/bench/_v12_parse_trace.fl +18 -0
- package/self/bench/_v12_simple_fn.fl +2 -0
- package/self/bench/_v12_simple_fn.js +3 -0
- package/self/bench/_v12_trace.fl +2 -0
- package/self/bench/_v12_trace.js +3 -0
- package/self/bench/collection.js +13 -0
- package/self/bench/fib30.fl +4 -0
- package/self/bench/final-test.fl +12 -0
- package/self/bench/final-test.js +2 -0
- package/self/bench/fp1-v12.js +4 -0
- package/self/bench/fp1.fl +3 -0
- package/self/bench/fp1.fp.js +4 -0
- package/self/bench/fp2-v12.js +4 -0
- package/self/bench/fp2.fl +3 -0
- package/self/bench/fp2.fp.js +4 -0
- package/self/bench/fp3-v12.js +8 -0
- package/self/bench/fp3.fl +11 -0
- package/self/bench/fp3.fp.js +8 -0
- package/self/bench/fp4-v12.js +6 -0
- package/self/bench/fp4.fl +9 -0
- package/self/bench/fp4.fp.js +6 -0
- package/self/bench/hello-sample.fl +3 -0
- package/self/bench/hello-sample.js +4 -0
- package/self/bench/hello.fl +1 -0
- package/self/bench/json.js +9 -0
- package/self/bench/json1mb.fl +3 -0
- package/self/bench/math.js +8 -0
- package/self/bench/realworld.fl +17 -0
- package/self/bench/realworld.js +8 -0
- package/self/bench/regex.js +10 -0
- package/self/bench/sample.json +1 -0
- package/self/bench/string.js +7 -0
- package/self/bench/test-ffi.fl +3 -0
- package/self/bench/test-ffi.js +2 -0
- package/self/bench/test-hof-advanced.fl +7 -0
- package/self/bench/test-hof-advanced.js +2 -0
- package/self/bench/test-hof.fl +5 -0
- package/self/bench/test-hof.js +2 -0
- package/self/bench/test-output.txt +1 -0
- package/self/bench/test-phase15-integration.fl +16 -0
- package/self/bench/test-phase15-integration.js +3 -0
- package/self/bench/test-phase19-complete.fl +24 -0
- package/self/bench/test-phase19-complete.js +2 -0
- package/self/bench/test-stdlib-codegen.fl +9 -0
- package/self/bench/test-stdlib-codegen.js +2 -0
- package/self/bench/test-time.fl +8 -0
- package/self/bench/test-time.js +2 -0
- package/self/bench/time.js +9 -0
- package/self/bench/tiny-v12.js +2 -0
- package/self/bench/tiny.fl +1 -0
- package/self/builtins/core.fl +150 -0
- package/self/char-class.fl +45 -0
- package/self/codegen-core.fl +733 -0
- package/self/codegen-final.fl +135 -0
- package/self/codegen.fl +379 -0
- package/self/codegen.fl.bak +856 -0
- package/self/codegen.self.js +75 -0
- package/self/examples/agent-loop.fl +32 -0
- package/self/examples/ci-cd-example.fl +114 -0
- package/self/examples/cloud-real.fl +134 -0
- package/self/examples/docker-example.fl +67 -0
- package/self/examples/fullstack-app.fl +330 -0
- package/self/examples/k8s-example.fl +91 -0
- package/self/examples/microservices.fl +448 -0
- package/self/examples/rest-api.fl +253 -0
- package/self/examples/style-example.fl +133 -0
- package/self/examples/workflow-orchestration.fl +44 -0
- package/self/fixtures/eval/add.fl +1 -0
- package/self/fixtures/eval/and-sc.fl +1 -0
- package/self/fixtures/eval/bool-false.fl +1 -0
- package/self/fixtures/eval/bool-true.fl +1 -0
- package/self/fixtures/eval/closure.fl +1 -0
- package/self/fixtures/eval/cmp-eq.fl +1 -0
- package/self/fixtures/eval/cmp-lt.fl +1 -0
- package/self/fixtures/eval/cond-first.fl +1 -0
- package/self/fixtures/eval/define-fn3.fl +1 -0
- package/self/fixtures/eval/define-var.fl +1 -0
- package/self/fixtures/eval/defn-bare.fl +1 -0
- package/self/fixtures/eval/defn-call.fl +1 -0
- package/self/fixtures/eval/div.fl +1 -0
- package/self/fixtures/eval/filter-hof.fl +1 -0
- package/self/fixtures/eval/floor.fl +1 -0
- package/self/fixtures/eval/fn-apply.fl +1 -0
- package/self/fixtures/eval/get-idx.fl +1 -0
- package/self/fixtures/eval/get-key.fl +1 -0
- package/self/fixtures/eval/higher-order.fl +1 -0
- package/self/fixtures/eval/let-bare.fl +1 -0
- package/self/fixtures/eval/let-flat.fl +1 -0
- package/self/fixtures/eval/let-use.fl +1 -0
- package/self/fixtures/eval/list-first.fl +1 -0
- package/self/fixtures/eval/list-last.fl +1 -0
- package/self/fixtures/eval/list-len.fl +1 -0
- package/self/fixtures/eval/map-hof.fl +1 -0
- package/self/fixtures/eval/mod.fl +1 -0
- package/self/fixtures/eval/mul-nested.fl +1 -0
- package/self/fixtures/eval/not.fl +1 -0
- package/self/fixtures/eval/null-p.fl +1 -0
- package/self/fixtures/eval/or-sc.fl +1 -0
- package/self/fixtures/eval/pow.fl +1 -0
- package/self/fixtures/eval/recursion.fl +1 -0
- package/self/fixtures/eval/reduce-hof.fl +1 -0
- package/self/fixtures/eval/replace.fl +1 -0
- package/self/fixtures/eval/sqrt.fl +1 -0
- package/self/fixtures/eval/str-concat.fl +1 -0
- package/self/fixtures/eval/str-num.fl +1 -0
- package/self/fixtures/eval/sub.fl +1 -0
- package/self/fixtures/eval/substring.fl +1 -0
- package/self/fixtures/lex/array.fl +1 -0
- package/self/fixtures/lex/at-atom.fl +1 -0
- package/self/fixtures/lex/block.fl +1 -0
- package/self/fixtures/lex/comment.fl +2 -0
- package/self/fixtures/lex/deep-array.fl +1 -0
- package/self/fixtures/lex/deep-map.fl +1 -0
- package/self/fixtures/lex/deep-nest.fl +1 -0
- package/self/fixtures/lex/dollar-dot.fl +1 -0
- package/self/fixtures/lex/empty-list.fl +1 -0
- package/self/fixtures/lex/empty-str.fl +1 -0
- package/self/fixtures/lex/empty.fl +1 -0
- package/self/fixtures/lex/float.fl +1 -0
- package/self/fixtures/lex/hex.fl +1 -0
- package/self/fixtures/lex/kebab-sym.fl +1 -0
- package/self/fixtures/lex/keyword.fl +1 -0
- package/self/fixtures/lex/leading-zero.fl +1 -0
- package/self/fixtures/lex/long-num.fl +1 -0
- package/self/fixtures/lex/many-args.fl +1 -0
- package/self/fixtures/lex/map.fl +1 -0
- package/self/fixtures/lex/mixed.fl +1 -0
- package/self/fixtures/lex/neg-float.fl +1 -0
- package/self/fixtures/lex/negative.fl +1 -0
- package/self/fixtures/lex/nested.fl +1 -0
- package/self/fixtures/lex/null.fl +1 -0
- package/self/fixtures/lex/pipe-op.fl +1 -0
- package/self/fixtures/lex/route-like.fl +1 -0
- package/self/fixtures/lex/scientific.fl +1 -0
- package/self/fixtures/lex/single-num.fl +1 -0
- package/self/fixtures/lex/small-sexpr.fl +1 -0
- package/self/fixtures/lex/spaces.fl +1 -0
- package/self/fixtures/lex/str-quote.fl +1 -0
- package/self/fixtures/lex/str-tab.fl +1 -0
- package/self/fixtures/lex/string-esc.fl +1 -0
- package/self/fixtures/lex/string.fl +1 -0
- package/self/fixtures/lex/symbol.fl +1 -0
- package/self/fixtures/lex/tabs-nl.fl +3 -0
- package/self/fixtures/lex/true-false.fl +1 -0
- package/self/fixtures/lex/unicode.fl +1 -0
- package/self/fixtures/lex/variable.fl +1 -0
- package/self/fixtures/lex/zero.fl +1 -0
- package/self/fixtures/parse/and-or.fl +1 -0
- package/self/fixtures/parse/array-lit.fl +1 -0
- package/self/fixtures/parse/block-func.fl +1 -0
- package/self/fixtures/parse/compose.fl +1 -0
- package/self/fixtures/parse/cond.fl +1 -0
- package/self/fixtures/parse/define-fn.fl +1 -0
- package/self/fixtures/parse/define-val.fl +1 -0
- package/self/fixtures/parse/defn.fl +1 -0
- package/self/fixtures/parse/do-begin.fl +1 -0
- package/self/fixtures/parse/dotted.fl +1 -0
- package/self/fixtures/parse/empty-fn.fl +1 -0
- package/self/fixtures/parse/empty-list.fl +1 -0
- package/self/fixtures/parse/fn.fl +1 -0
- package/self/fixtures/parse/if-else.fl +1 -0
- package/self/fixtures/parse/if-only.fl +1 -0
- package/self/fixtures/parse/keyword-arg.fl +1 -0
- package/self/fixtures/parse/kw.fl +1 -0
- package/self/fixtures/parse/let-1d.fl +1 -0
- package/self/fixtures/parse/let-2d.fl +1 -0
- package/self/fixtures/parse/let-bare.fl +1 -0
- package/self/fixtures/parse/literal-num.fl +1 -0
- package/self/fixtures/parse/literal-str.fl +1 -0
- package/self/fixtures/parse/loop-recur.fl +1 -0
- package/self/fixtures/parse/map-lit.fl +1 -0
- package/self/fixtures/parse/match-simple.fl +1 -0
- package/self/fixtures/parse/multi-body.fl +1 -0
- package/self/fixtures/parse/nested-arr.fl +1 -0
- package/self/fixtures/parse/nested-block.fl +1 -0
- package/self/fixtures/parse/nested-map.fl +1 -0
- package/self/fixtures/parse/nested.fl +1 -0
- package/self/fixtures/parse/pipe.fl +1 -0
- package/self/fixtures/parse/quote.fl +1 -0
- package/self/fixtures/parse/set-bang.fl +1 -0
- package/self/fixtures/parse/sexpr.fl +1 -0
- package/self/fixtures/parse/str-interp.fl +1 -0
- package/self/fixtures/parse/sym.fl +1 -0
- package/self/fixtures/parse/thread-first.fl +1 -0
- package/self/fixtures/parse/thread-last.fl +1 -0
- package/self/fixtures/parse/try-catch.fl +1 -0
- package/self/fixtures/parse/var.fl +1 -0
- package/self/full-compiler-fixed.fl +1308 -0
- package/self/full-compiler-v1-bloated.fl +1298 -0
- package/self/full-compiler.fl +1301 -0
- package/self/interpreter.fl +351 -0
- package/self/lexer.fl +200 -0
- package/self/lexer.self.js +30 -0
- package/self/main.fl +22 -0
- package/self/parser.fl +241 -0
- package/self/parser.self.js +33 -0
- package/self/runtime/http-server.js +642 -0
- package/self/runtime/interpreter.js +30787 -0
- package/self/runtime/repl.js +186 -0
- package/self/runtime-helpers.ts +282 -0
- package/self/scope.fl +80 -0
- package/self/scope.self.js +1 -0
- package/self/self/bench/_bi_list-distinct.js +2 -0
- package/self/self/bench/_bi_list-filter-even.js +2 -0
- package/self/self/bench/_bi_list-first.js +2 -0
- package/self/self/bench/_bi_list-last.js +2 -0
- package/self/self/bench/_bi_list-map-inc.js +2 -0
- package/self/self/bench/_bi_list-range.js +2 -0
- package/self/self/bench/_bi_list-reduce-sum.js +2 -0
- package/self/self/bench/_bi_list-reverse.js +2 -0
- package/self/self/bench/_bi_list-sort.js +2 -0
- package/self/self/bench/_bi_list-take.js +2 -0
- package/self/self/bench/_bi_map-has.js +2 -0
- package/self/self/bench/_bi_map-keys.js +2 -0
- package/self/self/bench/_bi_map-values.js +2 -0
- package/self/self/bench/_bi_str-concat.js +2 -0
- package/self/self/bench/_bi_str-contains.js +2 -0
- package/self/self/bench/_bi_str-ends.js +2 -0
- package/self/self/bench/_bi_str-index.js +2 -0
- package/self/self/bench/_bi_str-lower.js +2 -0
- package/self/self/bench/_bi_str-repeat.js +2 -0
- package/self/self/bench/_bi_str-split.js +2 -0
- package/self/self/bench/_bi_str-starts.js +2 -0
- package/self/self/bench/_bi_str-trim.js +2 -0
- package/self/self/bench/_bi_str-upper.js +2 -0
- package/self/self/bench/_ext_abs-neg.js +2 -0
- package/self/self/bench/_ext_and.js +2 -0
- package/self/self/bench/_ext_cond-1.js +2 -0
- package/self/self/bench/_ext_cond-2.js +2 -0
- package/self/self/bench/_ext_do-seq.js +2 -0
- package/self/self/bench/_ext_fact20.js +3 -0
- package/self/self/bench/_ext_fib25.js +3 -0
- package/self/self/bench/_ext_length.js +2 -0
- package/self/self/bench/_ext_let-1d.js +2 -0
- package/self/self/bench/_ext_let-2d.js +2 -0
- package/self/self/bench/_ext_list-sum.js +3 -0
- package/self/self/bench/_ext_math.js +2 -0
- package/self/self/bench/_ext_or.js +2 -0
- package/self/self/bench/_ext_str.js +2 -0
- package/self/self/bench/_fact15.js +2 -0
- package/self/self/bench/_fb_fact15.js +2 -0
- package/self/self/bench/_fb_func-fact.js +2 -0
- package/self/self/bench/_fb_func-multi.js +2 -0
- package/self/self/bench/_fb_func-mutual.js +3 -0
- package/self/self/bench/_fb_func-simple.js +2 -0
- package/self/self/bench/_fib.js +2 -0
- package/self/self/bench/_fn_async-await-seq.js +2 -0
- package/self/self/bench/_fn_async-print.js +2 -0
- package/self/self/bench/_fn_call-form.js +2 -0
- package/self/self/bench/_fn_compose.js +2 -0
- package/self/self/bench/_fn_pipe.js +2 -0
- package/self/self/bench/_fn_thread-first-sexpr.js +2 -0
- package/self/self/bench/_fn_thread-first.js +2 -0
- package/self/self/bench/_fn_thread-last.js +2 -0
- package/self/self/bench/_generated.js +2 -0
- package/self/self/bench/_mt_match-default.js +2 -0
- package/self/self/bench/_mt_match-num.js +2 -0
- package/self/self/bench/_mt_match-str.js +2 -0
- package/self/self/bench/_mt_match-var.js +2 -0
- package/self/self/bench/_mt_match-wild.js +2 -0
- package/self/self/bench/_mt_struct-make.js +4 -0
- package/self/self/bench/_mt_struct-tag.js +4 -0
- package/self/self/bench/_rs_combo.js +3 -0
- package/self/self/bench/_rs_gcd.js +2 -0
- package/self/self/bench/_rs_grade.js +2 -0
- package/self/self/bench/_rs_mutual-fib.js +2 -0
- package/self/self/bench/_rs_range-sum.js +2 -0
- package/self/self/bench/_rs_sum-5k.js +2 -0
- package/self/self/bench/_sf_loop-fact-10.js +1 -0
- package/self/self/bench/_sf_loop-sum-10k.js +1 -0
- package/self/self/bench/_sf_set-x.js +3 -0
- package/self/self/bench/_sf_throw-catch.js +1 -0
- package/self/self/bench/_sf_while-5.js +3 -0
- package/self/stdlib/ai.fl +73 -0
- package/self/stdlib/assert.fl +30 -0
- package/self/stdlib/async.fl +48 -0
- package/self/stdlib/base64.fl +22 -0
- package/self/stdlib/binary.fl +30 -0
- package/self/stdlib/build.fl +69 -0
- package/self/stdlib/collection.fl +37 -0
- package/self/stdlib/color.fl +35 -0
- package/self/stdlib/crypto-hash.fl +29 -0
- package/self/stdlib/crypto.fl +56 -0
- package/self/stdlib/data.fl +69 -0
- package/self/stdlib/db.fl +53 -0
- package/self/stdlib/encoding.fl +49 -0
- package/self/stdlib/error.fl +36 -0
- package/self/stdlib/feed.fl +86 -0
- package/self/stdlib/file.fl +53 -0
- package/self/stdlib/format.fl +34 -0
- package/self/stdlib/graph.fl +72 -0
- package/self/stdlib/hash.fl +32 -0
- package/self/stdlib/heap.fl +76 -0
- package/self/stdlib/http.fl +47 -0
- package/self/stdlib/image.fl +45 -0
- package/self/stdlib/json.fl +11 -0
- package/self/stdlib/list-extra.fl +32 -0
- package/self/stdlib/markdown.fl +59 -0
- package/self/stdlib/math-extra.fl +34 -0
- package/self/stdlib/math.fl +13 -0
- package/self/stdlib/metadata.fl +66 -0
- package/self/stdlib/mongodb/bson.fl +21 -0
- package/self/stdlib/mongodb/schema.fl +95 -0
- package/self/stdlib/mongodb/wire.fl +54 -0
- package/self/stdlib/mongodb.fl +172 -0
- package/self/stdlib/path.fl +72 -0
- package/self/stdlib/plot.fl +56 -0
- package/self/stdlib/process.fl +50 -0
- package/self/stdlib/queue.fl +65 -0
- package/self/stdlib/regex.fl +11 -0
- package/self/stdlib/resource.fl +61 -0
- package/self/stdlib/search.fl +54 -0
- package/self/stdlib/set-extra.fl +35 -0
- package/self/stdlib/sort.fl +61 -0
- package/self/stdlib/stack.fl +54 -0
- package/self/stdlib/stats.fl +110 -0
- package/self/stdlib/stream.fl +56 -0
- package/self/stdlib/string-extended.fl +25 -0
- package/self/stdlib/string-extra.fl +40 -0
- package/self/stdlib/string.fl +21 -0
- package/self/stdlib/test-helpers.fl +51 -0
- package/self/stdlib/test-runner.fl +76 -0
- package/self/stdlib/time-extra.fl +27 -0
- package/self/stdlib/time.fl +31 -0
- package/self/stdlib/tree.fl +57 -0
- package/self/stdlib/types.fl +85 -0
- package/self/stdlib/url.fl +33 -0
- package/self/stdlib/uuid.fl +28 -0
- package/self/stdlib/validation.fl +42 -0
- package/self/stdlib/vector-math.fl +52 -0
- package/self/stdlib/ws.fl +52 -0
- package/self/tests/mongodb-phase3.fl +75 -0
- package/self/tests/mongodb-wire-phase2.fl +45 -0
- package/self/tests/test-ast.fl +36 -0
- package/self/tests/test-builtins.fl +340 -0
- package/self/tests/test-char-class.fl +29 -0
- package/self/tests/test-codegen-builtins.fl +240 -0
- package/self/tests/test-codegen-ext.fl +380 -0
- package/self/tests/test-codegen-ffi.fl +295 -0
- package/self/tests/test-codegen-fn.fl +177 -0
- package/self/tests/test-codegen-match.fl +161 -0
- package/self/tests/test-codegen-run.fl +252 -0
- package/self/tests/test-codegen-sf.fl +262 -0
- package/self/tests/test-codegen.fl +260 -0
- package/self/tests/test-core-fl.fl +63 -0
- package/self/tests/test-forward-decl.fl +5 -0
- package/self/tests/test-func-block.fl +4 -0
- package/self/tests/test-interp-user-fn.fl +296 -0
- package/self/tests/test-interp.fl +225 -0
- package/self/tests/test-lexer.fl +162 -0
- package/self/tests/test-list-debug.fl +21 -0
- package/self/tests/test-mutual-rec.fl +6 -0
- package/self/tests/test-parser-debug.fl +35 -0
- package/self/tests/test-parser-full-debug.fl +66 -0
- package/self/tests/test-parser-lex-debug.fl +107 -0
- package/self/tests/test-parser-lex-only.fl +40 -0
- package/self/tests/test-parser-simple-debug.fl +35 -0
- package/self/tests/test-parser.fl +262 -0
- package/self/tests/test-real-stdlib.fl +377 -0
- package/self/tests/test-scope.fl +74 -0
- package/self/tests/test-selfcompile.fl +325 -0
- package/self/tests/test-stdlib.fl +44 -0
- package/self/tests/test-tco.fl +16 -0
- package/self/tests/test-token.fl +4 -0
- package/self/token.fl +38 -0
- package/self/token.self.js +8 -0
- package/self/v12-driver.fl +16 -0
- package/self/verify.fl +39 -0
- package/self-evolve/1-observe-ast.fl +28 -0
- package/self-evolve/2-inspect-block.fl +35 -0
- package/self-evolve/3-full-ast-json.fl +10 -0
- package/self-evolve/4-trace-block-fields.fl +23 -0
- package/self-evolve/5-analyze-do-ast.fl +29 -0
- package/self-evolve/6-test-do-elim-simple.fl +14 -0
- package/self-evolve/debug-evaluate.fl +24 -0
- package/self-evolve/debug-gen1-const-fold.fl +57 -0
- package/self-evolve/debug-map.fl +15 -0
- package/self-evolve/debug-optimize-simple.fl +95 -0
- package/self-evolve/debug-recursive-map.fl +23 -0
- package/self-evolve/logs/gen-0.fl +1658 -0
- package/self-evolve/logs/gen-1.fl +1658 -0
- package/self-evolve/logs/gen-2.fl +1658 -0
- package/self-evolve/logs/speed-gen-0.fl +1423 -0
- package/self-evolve/run-semantic-test.js +130 -0
- package/self-evolve/test-basic.fl +19 -0
- package/self-evolve/test-fold-direct.fl +60 -0
- package/self-evolve/test-gen1-simple.fl +67 -0
- package/self-evolve/test-optimize-debug.fl +63 -0
- package/self-evolve/tmp-test.fl +1 -0
- package/self-evolve/v11-analyzer.fl +40 -0
- package/self-evolve/v11-benchmark.fl +45 -0
- package/self-evolve/v11-evolution-real.fl +45 -0
- package/self-evolve/v11-evolution.fl +32 -0
- package/self-evolve/v11-gen1-validate.fl +157 -0
- package/self-evolve/v11-optimizer-constant-fold.fl +124 -0
- package/self-evolve/v11-optimizer-dead-expr.fl +111 -0
- package/self-evolve/v11-optimizer-gen1-complete.fl +180 -0
- package/self-evolve/v11-optimizer-gen1.fl +68 -0
- package/self-evolve/v11-optimizer.fl +56 -0
- package/self-evolve/v11-semantic-test.fl +54 -0
- package/self-evolve/v11-speed-benchmark.fl +106 -0
- package/self-evolve/v11-speed-optimizer.fl +79 -0
- package/src/AGENT-DSL.md +527 -0
- package/src/CLI-DEPLOYMENT.md +204 -0
- package/src/CLI.md +361 -0
- package/src/EXPRESS-ADVANCED.md +294 -0
- package/src/EXPRESS-AUTH.md +365 -0
- package/src/EXPRESS-CACHE.md +409 -0
- package/src/EXPRESS-COMPLETE.md +569 -0
- package/src/EXPRESS-README.md +121 -0
- package/src/EXPRESS-TEST.md +492 -0
- package/src/EXPRESS-WEBSOCKET.md +391 -0
- package/src/LOGGING-GUIDE.md +354 -0
- package/src/STORAGE-GUIDE.md +416 -0
- package/src/__tests__/advanced.test.ts +573 -0
- package/src/__tests__/ai-library.test.ts +210 -0
- package/src/__tests__/build-determinism.test.ts +33 -0
- package/src/__tests__/builtins-advanced.test.ts +150 -0
- package/src/__tests__/builtins-sanity.test.ts +180 -0
- package/src/__tests__/codegen.let.test.ts +81 -0
- package/src/__tests__/core.test.ts +188 -0
- package/src/__tests__/coverage-boost.test.ts +626 -0
- package/src/__tests__/cron-scheduler.test.ts +269 -0
- package/src/__tests__/enterprise-blocks.test.ts +63 -0
- package/src/__tests__/errors.test.ts +313 -0
- package/src/__tests__/integration.test.ts +219 -0
- package/src/__tests__/interpreter.test.ts +170 -0
- package/src/__tests__/l2-proof.test.ts +78 -0
- package/src/__tests__/lexer-parser.test.ts +366 -0
- package/src/__tests__/lexer.test.ts +106 -0
- package/src/__tests__/mariadb-prepared-statement.test.ts +206 -0
- package/src/__tests__/migrate.test.ts +403 -0
- package/src/__tests__/mongodb-integration.test.ts.skip +207 -0
- package/src/__tests__/mongodb-phase4.test.ts +132 -0
- package/src/__tests__/p1-1-parallel-tasks.test.ts +179 -0
- package/src/__tests__/p1-2-compensation.test.ts +242 -0
- package/src/__tests__/p1-3-distributed.test.ts +160 -0
- package/src/__tests__/p1-4-observability.test.ts +161 -0
- package/src/__tests__/parser.test.ts +142 -0
- package/src/__tests__/phase151-self-evolve.test.ts +161 -0
- package/src/__tests__/rate-limiter.test.ts +274 -0
- package/src/__tests__/self-hosting.test.ts +174 -0
- package/src/__tests__/semantic-preservation.test.ts +207 -0
- package/src/__tests__/setup.ts +34 -0
- package/src/__tests__/special-forms-advanced.test.ts +106 -0
- package/src/__tests__/stdlib-crypto-rsa.test.ts +122 -0
- package/src/__tests__/stdlib-f4.test.ts +159 -0
- package/src/__tests__/stdlib-helpers.test.ts +128 -0
- package/src/__tests__/stdlib-modules.test.ts +161 -0
- package/src/__tests__/stdlib-mongodb.test.ts +331 -0
- package/src/__tests__/stdlib-new.test.ts +269 -0
- package/src/__tests__/stdlib-perf.test.ts +125 -0
- package/src/__tests__/stdlib-phase-b.test.ts +249 -0
- package/src/__tests__/stdlib.test.ts +163 -0
- package/src/__tests__/v12-alpha.test.ts +205 -0
- package/src/__tests__/vm-optin.test.ts +141 -0
- package/src/__tests__/web-integration.test.ts +1452 -0
- package/src/__tests__/weblibs.test.ts +210 -0
- package/src/_aliases.json +1123 -0
- package/src/_mongodb_helper.js +272 -0
- package/src/_stdlib-signatures.json +1 -0
- package/src/agent-chain.ts +71 -0
- package/src/agent-dsl.fl +168 -0
- package/src/agent-example-error-handling.fl +51 -0
- package/src/agent-example-sequential.fl +66 -0
- package/src/agent-example-state-tracking.fl +70 -0
- package/src/agent.ts +393 -0
- package/src/align.ts +349 -0
- package/src/analogy.ts +78 -0
- package/src/ast-helpers.ts +199 -0
- package/src/ast.ts +817 -0
- package/src/async-runtime.ts +263 -0
- package/src/belief.ts +86 -0
- package/src/benchmark-self.ts +275 -0
- package/src/benchmarks/bench-interpreter.ts +73 -0
- package/src/benchmarks/bench-runner.ts +85 -0
- package/src/benchmarks/bench-vm.ts +128 -0
- package/src/browser-debug-panel.ts +220 -0
- package/src/browser-entry.ts +79 -0
- package/src/browser-stubs/child-process-stubs.ts +6 -0
- package/src/browser-stubs/crypto-stubs.ts +15 -0
- package/src/browser-stubs/misc-stubs.ts +4 -0
- package/src/browser-stubs/node-stubs.ts +17 -0
- package/src/browser-stubs/path-stubs.ts +6 -0
- package/src/bytecode.ts +41 -0
- package/src/causal.ts +258 -0
- package/src/chain-agents.ts +86 -0
- package/src/checkpoint.ts +106 -0
- package/src/ci-runner.ts +279 -0
- package/src/cli.ts +2136 -0
- package/src/codegen-js.ts +847 -0
- package/src/cognitive.ts +95 -0
- package/src/compete.ts +60 -0
- package/src/compiler.ts +267 -0
- package/src/compose-reason.ts +118 -0
- package/src/consensus.ts +109 -0
- package/src/context-window.ts +139 -0
- package/src/cot.ts +241 -0
- package/src/counterfactual.ts +268 -0
- package/src/critique.ts +77 -0
- package/src/crossover.ts +218 -0
- package/src/curiosity.ts +305 -0
- package/src/debate.ts +64 -0
- package/src/debug-api.ts +92 -0
- package/src/debugger.ts +185 -0
- package/src/delegate.ts +78 -0
- package/src/doc-extractor.ts +255 -0
- package/src/doc-renderer.ts +131 -0
- package/src/echo-server-demo.fl +17 -0
- package/src/error-formatter.ts +369 -0
- package/src/error-system.ts +88 -0
- package/src/errors.ts +281 -0
- package/src/ethics-check.ts +408 -0
- package/src/eval-ai-blocks.ts +182 -0
- package/src/eval-ai-handlers.ts +132 -0
- package/src/eval-builtins-ai.ts +1659 -0
- package/src/eval-builtins.ts +5956 -0
- package/src/eval-call-function.ts +665 -0
- package/src/eval-infra-blocks.ts +450 -0
- package/src/eval-module-system.ts +286 -0
- package/src/eval-pattern-match.ts +289 -0
- package/src/eval-phase150.ts +87 -0
- package/src/eval-reasoning-sequence.ts +218 -0
- package/src/eval-special-forms.ts +2154 -0
- package/src/eval-style-blocks.ts +193 -0
- package/src/eval-type-classes.ts +148 -0
- package/src/evolve.ts +276 -0
- package/src/explain.ts +345 -0
- package/src/express-advanced.fl +78 -0
- package/src/express-auth.fl +118 -0
- package/src/express-cache.fl +118 -0
- package/src/express-chat.fl +81 -0
- package/src/express-example.fl +67 -0
- package/src/express-test.fl +331 -0
- package/src/express.fl +92 -0
- package/src/fitness.ts +238 -0
- package/src/fl-app-demo.fl +19 -0
- package/src/fl-files/fl-fmt.fl +29 -0
- package/src/fl-files/fl-lint.fl +61 -0
- package/src/fl-files/fl-test.fl +52 -0
- package/src/fl-http-demo.fl +19 -0
- package/src/fl-list-utils.fl +108 -0
- package/src/fl-math-lib.fl +14 -0
- package/src/fl-sdk.ts +154 -0
- package/src/fl-server-demo.fl +74 -0
- package/src/fl-str-utils.fl +29 -0
- package/src/fl-tutor.ts +126 -0
- package/src/formatter.ts +581 -0
- package/src/freelang-codegen.fl +904 -0
- package/src/freelang-interpreter.fl +483 -0
- package/src/freelang-lexer.fl +337 -0
- package/src/freelang-parser.fl +349 -0
- package/src/freelang-stdlib.fl +246 -0
- package/src/freelang-typechecker.fl +422 -0
- package/src/freelang-v9-complete.ts +474 -0
- package/src/generation.ts +201 -0
- package/src/gpt-mini-p3.fl +316 -0
- package/src/hot-reload.ts +235 -0
- package/src/http-server-runner.ts +89 -0
- package/src/hypothesis.ts +62 -0
- package/src/immutable.ts +140 -0
- package/src/interpreter-context.ts +87 -0
- package/src/interpreter-scope.ts +140 -0
- package/src/interpreter.ts +2351 -0
- package/src/lazy-seq.ts +134 -0
- package/src/learned-facts-store.ts +306 -0
- package/src/lexer.ts +359 -0
- package/src/lint-rules.ts +584 -0
- package/src/linter.ts +237 -0
- package/src/logger.ts +128 -0
- package/src/logging-deterministic.fl +138 -0
- package/src/lsp-server.ts +379 -0
- package/src/macro-expander.ts +195 -0
- package/src/maybe-chain.ts +108 -0
- package/src/maybe-type.ts +163 -0
- package/src/memory-system.ts +142 -0
- package/src/meta-reason.ts +93 -0
- package/src/multi-agent-hub.ts +247 -0
- package/src/multi-agent.ts +101 -0
- package/src/mutate.ts +226 -0
- package/src/negotiate.ts +55 -0
- package/src/optimizer.ts +277 -0
- package/src/orchestrate.ts +154 -0
- package/src/package-manager.ts +375 -0
- package/src/parser.ts +2722 -0
- package/src/peer-review.ts +53 -0
- package/src/predict.ts +365 -0
- package/src/profiler.ts +150 -0
- package/src/prompt-compiler.ts +123 -0
- package/src/protocol.ts +114 -0
- package/src/prune.ts +195 -0
- package/src/quality-loop.ts +105 -0
- package/src/rag.ts +81 -0
- package/src/reasoning-debugger.ts +122 -0
- package/src/refactor-self.ts +362 -0
- package/src/reflect.ts +186 -0
- package/src/repl.ts +323 -0
- package/src/result-type.ts +126 -0
- package/src/return-signal.ts +10 -0
- package/src/runtime-entry.ts +8 -0
- package/src/runtime-helpers.ts +234 -0
- package/src/self-evolution-hub.ts +431 -0
- package/src/self-improve.ts +107 -0
- package/src/source-map.ts +114 -0
- package/src/stdlib-agent.js +164 -0
- package/src/stdlib-agent.ts +225 -0
- package/src/stdlib-ai-native.ts +176 -0
- package/src/stdlib-ai-workflow.ts +308 -0
- package/src/stdlib-ai.ts +180 -0
- package/src/stdlib-async.ts +179 -0
- package/src/stdlib-audit.ts +94 -0
- package/src/stdlib-auth.ts +196 -0
- package/src/stdlib-bits.ts +86 -0
- package/src/stdlib-blog.ts +127 -0
- package/src/stdlib-browser.ts +239 -0
- package/src/stdlib-cache.ts +147 -0
- package/src/stdlib-capture-error.ts +183 -0
- package/src/stdlib-channel.ts +96 -0
- package/src/stdlib-checkpoint.js +109 -0
- package/src/stdlib-checkpoint.ts +97 -0
- package/src/stdlib-cloud.ts +317 -0
- package/src/stdlib-collection.ts +227 -0
- package/src/stdlib-compile.ts +111 -0
- package/src/stdlib-cron.ts +219 -0
- package/src/stdlib-crypto-rsa.ts +82 -0
- package/src/stdlib-crypto.js +203 -0
- package/src/stdlib-crypto.ts +208 -0
- package/src/stdlib-data.ts +614 -0
- package/src/stdlib-db-query.ts +198 -0
- package/src/stdlib-db.ts +185 -0
- package/src/stdlib-distributed.ts +292 -0
- package/src/stdlib-error.ts +90 -0
- package/src/stdlib-fd.ts +130 -0
- package/src/stdlib-feed.ts +171 -0
- package/src/stdlib-file.ts +182 -0
- package/src/stdlib-helpers.ts +273 -0
- package/src/stdlib-http-macro.ts +178 -0
- package/src/stdlib-http-server.ts +1229 -0
- package/src/stdlib-http.ts +405 -0
- package/src/stdlib-image.ts +92 -0
- package/src/stdlib-kebab-aliases.ts +131 -0
- package/src/stdlib-lazy-registry.ts +106 -0
- package/src/stdlib-loader.ts +810 -0
- package/src/stdlib-mail.ts +251 -0
- package/src/stdlib-mariadb.ts +467 -0
- package/src/stdlib-markdown.ts +227 -0
- package/src/stdlib-matrix.ts +170 -0
- package/src/stdlib-middleware.ts +221 -0
- package/src/stdlib-module.ts +178 -0
- package/src/stdlib-mongodb.ts +174 -0
- package/src/stdlib-oci.ts +321 -0
- package/src/stdlib-optional.ts +56 -0
- package/src/stdlib-orm.ts +241 -0
- package/src/stdlib-perf.ts +140 -0
- package/src/stdlib-pg.ts +181 -0
- package/src/stdlib-plot.ts +196 -0
- package/src/stdlib-process.ts +120 -0
- package/src/stdlib-property.ts +157 -0
- package/src/stdlib-pubsub.ts +93 -0
- package/src/stdlib-queue-helpers.ts +92 -0
- package/src/stdlib-registry.ts +78 -0
- package/src/stdlib-resource.ts +553 -0
- package/src/stdlib-rest-crud.ts +146 -0
- package/src/stdlib-service.ts +206 -0
- package/src/stdlib-shell.ts +76 -0
- package/src/stdlib-stats.ts +172 -0
- package/src/stdlib-table.ts +200 -0
- package/src/stdlib-test-enhanced.ts +76 -0
- package/src/stdlib-test.ts +153 -0
- package/src/stdlib-time.js +217 -0
- package/src/stdlib-time.ts +282 -0
- package/src/stdlib-timer.ts +134 -0
- package/src/stdlib-totp.ts +110 -0
- package/src/stdlib-type-predicates.ts +136 -0
- package/src/stdlib-types.ts +107 -0
- package/src/stdlib-validation.ts +248 -0
- package/src/stdlib-verify.ts +181 -0
- package/src/stdlib-webauthn.ts +192 -0
- package/src/stdlib-workflow.js +715 -0
- package/src/stdlib-workflow.ts +950 -0
- package/src/stdlib-ws.ts +333 -0
- package/src/stdlib-wsc.test.ts +122 -0
- package/src/stdlib-wsc.ts +243 -0
- package/src/storage-unified.fl +279 -0
- package/src/streaming.ts +101 -0
- package/src/struct-system.ts +104 -0
- package/src/style-registry.ts +54 -0
- package/src/swarm.ts +89 -0
- package/src/tco.ts +31 -0
- package/src/test-advanced-patterns.ts +211 -0
- package/src/test-ast-debug.ts +20 -0
- package/src/test-ast-helpers.ts +208 -0
- package/src/test-async.ts +406 -0
- package/src/test-bootstrap-self-compile.ts +449 -0
- package/src/test-bootstrap-verification.ts +336 -0
- package/src/test-composition.ts +206 -0
- package/src/test-errors-phase6.ts +166 -0
- package/src/test-extended-monads.ts +313 -0
- package/src/test-field-parsing.ts +135 -0
- package/src/test-first-class-functions.ts +257 -0
- package/src/test-freelang-interpreter.ts +320 -0
- package/src/test-freelang-lexer.ts +306 -0
- package/src/test-freelang-parser.ts +268 -0
- package/src/test-fullstack-core.ts +258 -0
- package/src/test-fullstack-phase7-12.ts +305 -0
- package/src/test-fullstack-practical.ts +338 -0
- package/src/test-integration-stdlib.ts +195 -0
- package/src/test-interpreter-phase6.ts +305 -0
- package/src/test-lexer-comparison.ts +108 -0
- package/src/test-lexer-phase6.ts +271 -0
- package/src/test-modules.ts +325 -0
- package/src/test-monad-laws.ts +383 -0
- package/src/test-monads.ts +197 -0
- package/src/test-p0-checkpoint.ts +304 -0
- package/src/test-p0-conditional.ts +284 -0
- package/src/test-p0-error-handling.ts +231 -0
- package/src/test-p0-error-messages.ts +220 -0
- package/src/test-p1-1-parallel-tasks.js +214 -0
- package/src/test-parser-phase6.ts +222 -0
- package/src/test-performance.ts +206 -0
- package/src/test-phase10-data.ts +259 -0
- package/src/test-phase10-file.ts +216 -0
- package/src/test-phase100-stdlib-ai.ts +343 -0
- package/src/test-phase101-memory.ts +309 -0
- package/src/test-phase102-rag.ts +296 -0
- package/src/test-phase103-multi-agent.ts +418 -0
- package/src/test-phase104-try-reason.ts +459 -0
- package/src/test-phase105-streaming.ts +287 -0
- package/src/test-phase106-quality.ts +397 -0
- package/src/test-phase107-tutor.ts +305 -0
- package/src/test-phase108-debugger.ts +316 -0
- package/src/test-phase109-prompt-compiler.ts +333 -0
- package/src/test-phase11-12-complete.ts +275 -0
- package/src/test-phase11-error.ts +192 -0
- package/src/test-phase110-sdk.ts +320 -0
- package/src/test-phase111-hypothesis.ts +380 -0
- package/src/test-phase112-maybe-chain.ts +313 -0
- package/src/test-phase113-debate.ts +364 -0
- package/src/test-phase114-checkpoint.ts +348 -0
- package/src/test-phase115-meta-reason.ts +277 -0
- package/src/test-phase116-belief.ts +275 -0
- package/src/test-phase117-analogy.ts +325 -0
- package/src/test-phase118-critique.ts +308 -0
- package/src/test-phase119-compose.ts +434 -0
- package/src/test-phase12-http-shell.ts +120 -0
- package/src/test-phase120-cognitive.ts +297 -0
- package/src/test-phase121-consensus.ts +404 -0
- package/src/test-phase122-delegate.ts +411 -0
- package/src/test-phase123-vote.ts +339 -0
- package/src/test-phase124-negotiate.ts +403 -0
- package/src/test-phase125-swarm.ts +321 -0
- package/src/test-phase126-orchestrate.ts +343 -0
- package/src/test-phase127-peer-review.ts +279 -0
- package/src/test-phase128-chain-agents.ts +456 -0
- package/src/test-phase129-compete.ts +256 -0
- package/src/test-phase13-data.ts +223 -0
- package/src/test-phase130-hub.ts +390 -0
- package/src/test-phase131-evolve.ts +536 -0
- package/src/test-phase132-mutate.ts +268 -0
- package/src/test-phase133-crossover.ts +289 -0
- package/src/test-phase134-fitness.ts +306 -0
- package/src/test-phase135-generation.ts +328 -0
- package/src/test-phase136-prune.ts +228 -0
- package/src/test-phase137-refactor-self.ts +354 -0
- package/src/test-phase138-benchmark-self.ts +325 -0
- package/src/test-phase139-version-self.ts +278 -0
- package/src/test-phase14-collection.ts +254 -0
- package/src/test-phase140-self-evolution.ts +410 -0
- package/src/test-phase141-world-model.ts +387 -0
- package/src/test-phase142-causal.ts +384 -0
- package/src/test-phase143-counterfactual.ts +280 -0
- package/src/test-phase144-predict.ts +312 -0
- package/src/test-phase145-explain.ts +287 -0
- package/src/test-phase146-align.ts +439 -0
- package/src/test-phase147-ethics-check.ts +399 -0
- package/src/test-phase148-curiosity.ts +247 -0
- package/src/test-phase149-wisdom.ts +758 -0
- package/src/test-phase15-agent.ts +320 -0
- package/src/test-phase150-complete.ts +481 -0
- package/src/test-phase16-time.ts +292 -0
- package/src/test-phase17-crypto.ts +312 -0
- package/src/test-phase18-integration.ts +429 -0
- package/src/test-phase19-resource.ts +214 -0
- package/src/test-phase20-server-db.ts +160 -0
- package/src/test-phase21-ws-auth-cache-pubsub.ts +212 -0
- package/src/test-phase22-process.ts +166 -0
- package/src/test-phase23-selfhosting.ts +383 -0
- package/src/test-phase24-codegen.ts +236 -0
- package/src/test-phase25-bootstrap.ts +227 -0
- package/src/test-phase26-map-filter-reduce.ts +282 -0
- package/src/test-phase27-stdlib-codegen.ts +325 -0
- package/src/test-phase28-loop-recur.ts +182 -0
- package/src/test-phase29-import.ts +165 -0
- package/src/test-phase3-web-server.ts +234 -0
- package/src/test-phase30-selfcompile.ts +254 -0
- package/src/test-phase31-gen2-lexer.ts +251 -0
- package/src/test-phase33-gen3-bootstrap.ts +323 -0
- package/src/test-phase34-parser-tco.ts +268 -0
- package/src/test-phase35-error-messages.ts +280 -0
- package/src/test-phase36-sourcemap.ts +240 -0
- package/src/test-phase37-variadic.ts +228 -0
- package/src/test-phase38-destructuring.ts +261 -0
- package/src/test-phase39-do-block.ts +288 -0
- package/src/test-phase40-const-fold.ts +249 -0
- package/src/test-phase41-repl.ts +312 -0
- package/src/test-phase42-watch.ts +314 -0
- package/src/test-phase43-format.ts +377 -0
- package/src/test-phase44-check.ts +505 -0
- package/src/test-phase45-interpreter.ts +367 -0
- package/src/test-phase46-match.ts +390 -0
- package/src/test-phase47-file-io.ts +338 -0
- package/src/test-phase48-types.ts +308 -0
- package/src/test-phase49-stdlib.ts +365 -0
- package/src/test-phase5-week1.ts +160 -0
- package/src/test-phase50-fl-server.ts +159 -0
- package/src/test-phase51-transformer.ts +152 -0
- package/src/test-phase52-import.ts +161 -0
- package/src/test-phase53-training.ts +122 -0
- package/src/test-phase54-fl-utils.ts +122 -0
- package/src/test-phase55-http-client.ts +182 -0
- package/src/test-phase56-lexical-scope.ts +230 -0
- package/src/test-phase58-module-refactor.ts +298 -0
- package/src/test-phase59-errors.ts +226 -0
- package/src/test-phase6-compile.ts +227 -0
- package/src/test-phase60-types.ts +457 -0
- package/src/test-phase61-tco.ts +209 -0
- package/src/test-phase63-macros.ts +191 -0
- package/src/test-phase64-protocols.ts +451 -0
- package/src/test-phase65-patterns.ts +301 -0
- package/src/test-phase66-structs.ts +215 -0
- package/src/test-phase67-concurrency.ts +348 -0
- package/src/test-phase68-pipeline.ts +209 -0
- package/src/test-phase69-lazy.ts +237 -0
- package/src/test-phase7-registry.ts +236 -0
- package/src/test-phase70-immutable.ts +488 -0
- package/src/test-phase71-ai-native.ts +252 -0
- package/src/test-phase72-integration.ts +533 -0
- package/src/test-phase73-formatter.ts +361 -0
- package/src/test-phase74-linter.ts +565 -0
- package/src/test-phase75-repl.ts +227 -0
- package/src/test-phase76-testrunner.ts +439 -0
- package/src/test-phase77-doc.ts +416 -0
- package/src/test-phase78-debugger.ts +370 -0
- package/src/test-phase79-watch.ts +224 -0
- package/src/test-phase8-oci.ts +264 -0
- package/src/test-phase80-ci.ts +282 -0
- package/src/test-phase81-pkg.ts +383 -0
- package/src/test-phase82-profiler.ts +336 -0
- package/src/test-phase83-vm.ts +318 -0
- package/src/test-phase84-optimizer.ts +424 -0
- package/src/test-phase85-codegen.ts +380 -0
- package/src/test-phase86-lsp.ts +533 -0
- package/src/test-phase87-packages.ts +277 -0
- package/src/test-phase88-selfhost.ts +412 -0
- package/src/test-phase89-bench.ts +361 -0
- package/src/test-phase9-flnext-v2.ts +372 -0
- package/src/test-phase9-learn.ts +241 -0
- package/src/test-phase9-reasoning.ts +312 -0
- package/src/test-phase9-search.ts +212 -0
- package/src/test-phase90-release.ts +365 -0
- package/src/test-phase91-maybe.ts +257 -0
- package/src/test-phase92-cot.ts +438 -0
- package/src/test-phase93-tot.ts +462 -0
- package/src/test-phase94-reflect.ts +498 -0
- package/src/test-phase95-context.ts +268 -0
- package/src/test-phase96-errors.ts +296 -0
- package/src/test-phase97-tools.ts +344 -0
- package/src/test-phase98-agent.ts +370 -0
- package/src/test-phase99-self-improve.ts +394 -0
- package/src/test-phase9a-websearch.ts +283 -0
- package/src/test-phase9ab-integration.ts +140 -0
- package/src/test-phase9b-persistence.ts +448 -0
- package/src/test-phase9c-conditional.ts +251 -0
- package/src/test-phase9c-extension.ts +270 -0
- package/src/test-phase9c-feedback.ts +263 -0
- package/src/test-phase9c-loop.ts +239 -0
- package/src/test-selfhosting-sh1.ts +41 -0
- package/src/test-selfhosting-sh2.ts +84 -0
- package/src/test-selfhosting-sh3.ts +61 -0
- package/src/test-selfhosting-sh4.ts +65 -0
- package/src/test-type-classes-dispatch.ts +202 -0
- package/src/test-type-classes.ts +320 -0
- package/src/test-type-inference.ts +464 -0
- package/src/test-typeclass-parsing-final.ts +218 -0
- package/src/test-typeclass-parsing.ts +264 -0
- package/src/todo-server-30116.ts +53 -0
- package/src/token.ts +130 -0
- package/src/tool-registry.ts +195 -0
- package/src/tot.ts +258 -0
- package/src/try-reason.ts +109 -0
- package/src/type-check-static.ts +417 -0
- package/src/type-checker.ts +245 -0
- package/src/type-inference.ts +271 -0
- package/src/type-system.ts +169 -0
- package/src/version-self.ts +219 -0
- package/src/vm-eligible.ts +106 -0
- package/src/vm.ts +219 -0
- package/src/vote.ts +127 -0
- package/src/vpm/checksum-test.fl +193 -0
- package/src/vpm/checksum.fl +219 -0
- package/src/vpm/error-test.fl +211 -0
- package/src/vpm/error.fl +218 -0
- package/src/vpm/lock-file.fl +380 -0
- package/src/vpm/logging-test.fl +194 -0
- package/src/vpm/logging.fl +294 -0
- package/src/vpm/resolver-test.fl +117 -0
- package/src/vpm/resolver.fl +618 -0
- package/src/vpm/semver-test.fl +180 -0
- package/src/vpm/semver.fl +143 -0
- package/src/vpm-cli.ts +1955 -0
- package/src/web/app-router.ts +286 -0
- package/src/web/fl-executor.ts +655 -0
- package/src/web/image-optimizer.ts +206 -0
- package/src/web/index.ts +14 -0
- package/src/web/page-renderer.ts +287 -0
- package/src/web/server.ts +553 -0
- package/src/web-search-adapter.ts +348 -0
- package/src/wisdom.ts +441 -0
- package/src/world-model.ts +348 -0
- package/stdlib/cache.fl +42 -0
- package/stdlib/csv.fl +38 -0
- package/stdlib/date-ext.fl +68 -0
- package/stdlib/log.fl +44 -0
- package/stdlib/math-ext.fl +57 -0
- package/stdlib/number-ext.fl +47 -0
- package/stdlib/queue.fl +57 -0
- package/stdlib/string-ext.fl +45 -0
- package/stdlib/validate.fl +123 -0
- package/stdlib/web/components.fl +125 -0
- package/stdlib/web/csrf.fl +61 -0
- package/stdlib/web/format.fl +75 -0
- package/stdlib/web/forms.fl +94 -0
- package/stdlib/web/image.fl +77 -0
- package/stdlib/web/metadata.fl +85 -0
- package/stdlib/web/pagination.fl +62 -0
- package/stdlib/web/state.fl +167 -0
- package/stdlib/web/styles.fl +68 -0
- package/stdlib/web/toast.fl +62 -0
- package/stdlib/web/v9-stdlib-dom.fl +92 -0
- package/stdlib/web/v9-stdlib-fetch.fl +90 -0
- package/stdlib/web/v9-stdlib-storage.fl +70 -0
- package/stdlib/web/v9-stdlib-ui.fl +115 -0
- package/stdlib/web/ws-client.fl +125 -0
- package/tests/.v11-backup/test-migrate-sample.fl +22 -0
- package/tests/PHASE-C-VERIFICATION-REPORT.md +125 -0
- package/tests/benchmark-v11.1.js +103 -0
- package/tests/evidence/01-about.html +1 -0
- package/tests/evidence/02-post-hello.html +1 -0
- package/tests/evidence/02-post-world.html +1 -0
- package/tests/evidence/03-home.html +1 -0
- package/tests/evidence/04-dist/404.html +1 -0
- package/tests/evidence/04-dist/about/index.html +1 -0
- package/tests/evidence/04-dist/index.html +1 -0
- package/tests/evidence/04-dist/post/hello/index.html +1 -0
- package/tests/evidence/04-dist/post/world/index.html +1 -0
- package/tests/evidence/05-dist/404.html +1 -0
- package/tests/evidence/05-dist/about/index.html +1 -0
- package/tests/evidence/05-dist/index.html +1 -0
- package/tests/evidence/05-dist/post/hello/index.html +1 -0
- package/tests/evidence/05-dist/post/world/index.html +1 -0
- package/tests/evidence/06-dist/404.html +1 -0
- package/tests/evidence/06-dist/about/index.html +1 -0
- package/tests/evidence/06-dist/index.html +1 -0
- package/tests/evidence/06-dist/post/hello/index.html +1 -0
- package/tests/evidence/06-dist/post/world/index.html +1 -0
- package/tests/evidence/07-markdown.html +1 -0
- package/tests/evidence/08-rss.xml +25 -0
- package/tests/evidence/09-robots.txt +4 -0
- package/tests/evidence/09-sitemap.xml +12 -0
- package/tests/evidence/10-jsonld.html +1 -0
- package/tests/evidence/_results.txt +11 -0
- package/tests/evidence/about.html +1 -0
- package/tests/evidence/home.html +1 -0
- package/tests/evidence/missing.html +42 -0
- package/tests/evidence/post-hello.html +1 -0
- package/tests/evidence/post-world.html +1 -0
- package/tests/fixtures/basic-app/about/page.fl +1 -0
- package/tests/fixtures/basic-app/api/echo/route.fl +5 -0
- package/tests/fixtures/basic-app/layout.fl +1 -0
- package/tests/fixtures/basic-app/not-found.fl +1 -0
- package/tests/fixtures/basic-app/page.fl +1 -0
- package/tests/fixtures/basic-app/post/[slug]/generate-static-params.fl +1 -0
- package/tests/fixtures/basic-app/post/[slug]/page.fl +1 -0
- package/tests/fixtures/stdlib-probes/blog.fl +6 -0
- package/tests/fixtures/stdlib-probes/jsonld.fl +1 -0
- package/tests/fixtures/stdlib-probes/map-probe.fl +3 -0
- package/tests/fixtures/stdlib-probes/map-shape.fl +2 -0
- package/tests/fixtures/stdlib-probes/md.fl +1 -0
- package/tests/fixtures/stdlib-probes/robots.fl +1 -0
- package/tests/fixtures/stdlib-probes/rss.fl +4 -0
- package/tests/fixtures/stdlib-probes/sitemap.fl +1 -0
- package/tests/l2/case-01-arithmetic.fl +6 -0
- package/tests/l2/case-02-comparisons.fl +15 -0
- package/tests/l2/case-03-logic.fl +15 -0
- package/tests/l2/case-04-control-flow.fl +15 -0
- package/tests/l2/case-05-functions.fl +13 -0
- package/tests/l2/case-06-collections.fl +14 -0
- package/tests/l2/case-07-pattern-matching.fl +14 -0
- package/tests/l2/case-08-recursion.fl +19 -0
- package/tests/l2/case-09-strings.fl +13 -0
- package/tests/l2/case-10-loops.fl +17 -0
- package/tests/l2/case-11-higher-order.fl +13 -0
- package/tests/l2/case-12-edge-cases.fl +14 -0
- package/tests/l2/case-13-ai-vector.fl +22 -0
- package/tests/l2/case-14-ai-cosine.fl +25 -0
- package/tests/l2/case-15-ai-template.fl +22 -0
- package/tests/l2/case-16-ai-ranking.fl +20 -0
- package/tests/l2/case-17-stdlib-extended.fl +32 -0
- package/tests/l2-proof/01-arithmetic.bootstrap.js +141 -0
- package/tests/l2-proof/01-arithmetic.fl +15 -0
- package/tests/l2-proof/01-arithmetic.stage1.js +141 -0
- package/tests/l2-proof/02-comparisons.bootstrap.js +141 -0
- package/tests/l2-proof/02-comparisons.fl +17 -0
- package/tests/l2-proof/03-logic.bootstrap.js +141 -0
- package/tests/l2-proof/03-logic.fl +15 -0
- package/tests/l2-proof/04-control-flow.bootstrap.js +146 -0
- package/tests/l2-proof/04-control-flow.fl +24 -0
- package/tests/l2-proof/05-functions.bootstrap.js +143 -0
- package/tests/l2-proof/05-functions.fl +16 -0
- package/tests/l2-proof/06-collections.bootstrap.js +146 -0
- package/tests/l2-proof/06-collections.fl +27 -0
- package/tests/l2-proof/07-pattern-matching.bootstrap.js +142 -0
- package/tests/l2-proof/07-pattern-matching.fl +23 -0
- package/tests/l2-proof/08-async-errors.bootstrap.js +142 -0
- package/tests/l2-proof/08-async-errors.fl +17 -0
- package/tests/l2-proof/09-strings.bootstrap.js +141 -0
- package/tests/l2-proof/09-strings.fl +13 -0
- package/tests/l2-proof/10-type-checks.bootstrap.js +141 -0
- package/tests/l2-proof/10-type-checks.fl +17 -0
- package/tests/l2-proof/11-recursion.bootstrap.js +143 -0
- package/tests/l2-proof/11-recursion.fl +21 -0
- package/tests/l2-proof/12-edge-cases.bootstrap.js +141 -0
- package/tests/l2-proof/12-edge-cases.fl +17 -0
- package/tests/parity/01-app-router-static.sh +18 -0
- package/tests/parity/02-app-router-dynamic.sh +18 -0
- package/tests/parity/03-layout-children.sh +17 -0
- package/tests/parity/04-not-found.sh +22 -0
- package/tests/parity/05-ssg.sh +21 -0
- package/tests/parity/06-parallel-render.sh +21 -0
- package/tests/parity/07-markdown.sh +16 -0
- package/tests/parity/08-rss-atom.sh +18 -0
- package/tests/parity/09-sitemap-robots.sh +23 -0
- package/tests/parity/10-jsonld.sh +16 -0
- package/tests/parity/11-blog-helpers.sh +28 -0
- package/tests/parity/12-api-routes.sh +25 -0
- package/tests/parity/_lib.sh +53 -0
- package/tests/parity/run-all.sh +89 -0
- package/tests/parity/score.sh +20 -0
- package/tests/phase-c-fuzzing.fl +89 -0
- package/tests/phase-c-property-testing.fl +137 -0
- package/tests/phase-c-sha-verification.fl +117 -0
- package/tests/phase-c-validation.fl +194 -0
- package/tests/property-testing.sh +47 -0
- package/tests/regen/let-in-expr-01.fl +5 -0
- package/tests/regen/let-in-expr-02.fl +6 -0
- package/tests/regen/let-in-expr-03.fl +4 -0
- package/tests/regen/let-in-expr-04.fl +6 -0
- package/tests/regen/let-in-expr-05.fl +5 -0
- package/tests/test-ai-library.fl +36 -0
- package/tests/test-andor.fl +2 -0
- package/tests/test-bootstrap-match.fl +5 -0
- package/tests/test-cg-final.fl +5 -0
- package/tests/test-cli.fl +19 -0
- package/tests/test-codegen.fl +4 -0
- package/tests/test-cond-flat.fl +1 -0
- package/tests/test-fl-exec-op.fl +1 -0
- package/tests/test-fp.fl +10 -0
- package/tests/test-funcs.fl +11 -0
- package/tests/test-fuzz-crash.fl +3 -0
- package/tests/test-http-get.fl +3 -0
- package/tests/test-json-load.fl +32 -0
- package/tests/test-let-flat.fl +2 -0
- package/tests/test-let-order.fl +3 -0
- package/tests/test-let-simple.fl +3 -0
- package/tests/test-let-syntax.fl +2 -0
- package/tests/test-let.fl +3 -0
- package/tests/test-lex-debug.fl +75 -0
- package/tests/test-loop-bug.fl +5 -0
- package/tests/test-map-entries.fl +1 -0
- package/tests/test-map-pattern.fl +3 -0
- package/tests/test-match-syntax.fl +5 -0
- package/tests/test-migrate-sample.fl +22 -0
- package/tests/test-neg.fl +1 -0
- package/tests/test-nested-let.fl +4 -0
- package/tests/test-node-to-pattern.fl +8 -0
- package/tests/test-quant-lib.fl +114 -0
- package/tests/test-reduce.fl +10 -0
- package/tests/test-server.fl +3 -0
- package/tests/test-simple-map.fl +4 -0
- package/tests/test-simple-match.fl +3 -0
- package/tests/test-simple.fl +1 -0
- package/tests/test-try-bootstrap.fl +7 -0
- package/tests/test-try-catch.fl +3 -0
- package/tests/test-watchdog-lib.fl +69 -0
- package/tests/test-which-lex.fl +4 -0
- package/tsconfig.json +39 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const _fl_str = (...xs) => xs.map(x => x==null?'null':String(x)).join('');const _fl_length = (x) => (x==null ? 0 : x.length);const _fl_substring = (s, a, b) => (b==null ? s.slice(a) : s.slice(a, b));const _fl_char_at = (s, i) => (s[i] || null);const _fl_replace = (s, a, b) => s.split(a).join(b);const _fl_starts_with = (s, p) => s.startsWith(p);const _fl_ends_with = (s, p) => s.endsWith(p);const _fl_contains = (s, p) => s.includes(p);const _fl_split = (s, sep) => s.split(sep);const _fl_join = (l, sep) => l.join(sep==null?'':sep);const _fl_trim = (s) => s.trim();const _fl_upper = (s) => s.toUpperCase();const _fl_lower = (s) => s.toLowerCase();const _fl_repeat = (s, n) => s.repeat(n);const _fl_index_of = (s, p) => s.indexOf(p);const _fl_first = (l) => (l==null || l.length===0 ? null : l[0]);const _fl_last = (l) => (l==null || l.length===0 ? null : l[l.length-1]);const _fl_rest = (l) => (l==null || l.length===0 ? [] : l.slice(1));const _fl_append = (a, b) => (Array.isArray(b) ? [...a, ...b] : [...a, b]);const _fl_slice = (l, a, b) => l.slice(a, b);const _fl_map = (f, l) => l.map(x => f(x));const _fl_filter = (f, l) => l.filter(x => f(x));const _fl_reduce = (f, init, l) => l.reduce((acc, x) => f(acc, x), init);const _fl_sort = (l, cmp) => [...l].sort(cmp || ((a,b)=>a<b?-1:a>b?1:0));const _fl_reverse = (l) => [...l].reverse();const _fl_distinct = (l) => [...new Set(l)];const _fl_range = (a, b, s) => { let r=[]; let step=s||1; for(let i=a;i<b;i+=step)r.push(i); return r; };const _fl_take = (n, l) => l.slice(0, n);const _fl_drop = (n, l) => l.slice(n);const _fl_flatten = (l) => l.flat(Infinity);const _fl_get = (o, k) => (o==null ? null : (o[k]===undefined ? null : o[k]));const _fl_keys = (o) => (o==null ? [] : Object.keys(o));const _fl_values = (o) => (o==null ? [] : Object.values(o));const _fl_has_key = (o, k) => (o!=null && k in o);const _fl_merge = (...os) => Object.assign({}, ...os);const _fl_is_map = (x) => (x!=null && typeof x==='object' && !Array.isArray(x));const _fl_type_of = (x) => (x==null?'null':Array.isArray(x)?'list':typeof x);
|
|
2
|
+
console.log(_fl_str("hello"," ","world"));
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const _fl_str = (...xs) => xs.map(x => x==null?'null':String(x)).join('');const _fl_length = (x) => (x==null ? 0 : x.length);const _fl_substring = (s, a, b) => (b==null ? s.slice(a) : s.slice(a, b));const _fl_char_at = (s, i) => (s[i] || null);const _fl_replace = (s, a, b) => s.split(a).join(b);const _fl_starts_with = (s, p) => s.startsWith(p);const _fl_ends_with = (s, p) => s.endsWith(p);const _fl_contains = (s, p) => s.includes(p);const _fl_split = (s, sep) => s.split(sep);const _fl_join = (l, sep) => l.join(sep==null?'':sep);const _fl_trim = (s) => s.trim();const _fl_upper = (s) => s.toUpperCase();const _fl_lower = (s) => s.toLowerCase();const _fl_repeat = (s, n) => s.repeat(n);const _fl_index_of = (s, p) => s.indexOf(p);const _fl_first = (l) => (l==null || l.length===0 ? null : l[0]);const _fl_last = (l) => (l==null || l.length===0 ? null : l[l.length-1]);const _fl_rest = (l) => (l==null || l.length===0 ? [] : l.slice(1));const _fl_append = (a, b) => (Array.isArray(b) ? [...a, ...b] : [...a, b]);const _fl_slice = (l, a, b) => l.slice(a, b);const _fl_map = (f, l) => l.map(x => f(x));const _fl_filter = (f, l) => l.filter(x => f(x));const _fl_reduce = (f, init, l) => l.reduce((acc, x) => f(acc, x), init);const _fl_sort = (l, cmp) => [...l].sort(cmp || ((a,b)=>a<b?-1:a>b?1:0));const _fl_reverse = (l) => [...l].reverse();const _fl_distinct = (l) => [...new Set(l)];const _fl_range = (a, b, s) => { let r=[]; let step=s||1; for(let i=a;i<b;i+=step)r.push(i); return r; };const _fl_take = (n, l) => l.slice(0, n);const _fl_drop = (n, l) => l.slice(n);const _fl_flatten = (l) => l.flat(Infinity);const _fl_get = (o, k) => (o==null ? null : (o[k]===undefined ? null : o[k]));const _fl_keys = (o) => (o==null ? [] : Object.keys(o));const _fl_values = (o) => (o==null ? [] : Object.values(o));const _fl_has_key = (o, k) => (o!=null && k in o);const _fl_merge = (...os) => Object.assign({}, ...os);const _fl_is_map = (x) => (x!=null && typeof x==='object' && !Array.isArray(x));const _fl_type_of = (x) => (x==null?'null':Array.isArray(x)?'list':typeof x);
|
|
2
|
+
console.log(_fl_contains("hello world","lo w"));
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const _fl_str = (...xs) => xs.map(x => x==null?'null':String(x)).join('');const _fl_length = (x) => (x==null ? 0 : x.length);const _fl_substring = (s, a, b) => (b==null ? s.slice(a) : s.slice(a, b));const _fl_char_at = (s, i) => (s[i] || null);const _fl_replace = (s, a, b) => s.split(a).join(b);const _fl_starts_with = (s, p) => s.startsWith(p);const _fl_ends_with = (s, p) => s.endsWith(p);const _fl_contains = (s, p) => s.includes(p);const _fl_split = (s, sep) => s.split(sep);const _fl_join = (l, sep) => l.join(sep==null?'':sep);const _fl_trim = (s) => s.trim();const _fl_upper = (s) => s.toUpperCase();const _fl_lower = (s) => s.toLowerCase();const _fl_repeat = (s, n) => s.repeat(n);const _fl_index_of = (s, p) => s.indexOf(p);const _fl_first = (l) => (l==null || l.length===0 ? null : l[0]);const _fl_last = (l) => (l==null || l.length===0 ? null : l[l.length-1]);const _fl_rest = (l) => (l==null || l.length===0 ? [] : l.slice(1));const _fl_append = (a, b) => (Array.isArray(b) ? [...a, ...b] : [...a, b]);const _fl_slice = (l, a, b) => l.slice(a, b);const _fl_map = (f, l) => l.map(x => f(x));const _fl_filter = (f, l) => l.filter(x => f(x));const _fl_reduce = (f, init, l) => l.reduce((acc, x) => f(acc, x), init);const _fl_sort = (l, cmp) => [...l].sort(cmp || ((a,b)=>a<b?-1:a>b?1:0));const _fl_reverse = (l) => [...l].reverse();const _fl_distinct = (l) => [...new Set(l)];const _fl_range = (a, b, s) => { let r=[]; let step=s||1; for(let i=a;i<b;i+=step)r.push(i); return r; };const _fl_take = (n, l) => l.slice(0, n);const _fl_drop = (n, l) => l.slice(n);const _fl_flatten = (l) => l.flat(Infinity);const _fl_get = (o, k) => (o==null ? null : (o[k]===undefined ? null : o[k]));const _fl_keys = (o) => (o==null ? [] : Object.keys(o));const _fl_values = (o) => (o==null ? [] : Object.values(o));const _fl_has_key = (o, k) => (o!=null && k in o);const _fl_merge = (...os) => Object.assign({}, ...os);const _fl_is_map = (x) => (x!=null && typeof x==='object' && !Array.isArray(x));const _fl_type_of = (x) => (x==null?'null':Array.isArray(x)?'list':typeof x);
|
|
2
|
+
console.log(_fl_ends_with("hello world","world"));
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const _fl_str = (...xs) => xs.map(x => x==null?'null':String(x)).join('');const _fl_length = (x) => (x==null ? 0 : x.length);const _fl_substring = (s, a, b) => (b==null ? s.slice(a) : s.slice(a, b));const _fl_char_at = (s, i) => (s[i] || null);const _fl_replace = (s, a, b) => s.split(a).join(b);const _fl_starts_with = (s, p) => s.startsWith(p);const _fl_ends_with = (s, p) => s.endsWith(p);const _fl_contains = (s, p) => s.includes(p);const _fl_split = (s, sep) => s.split(sep);const _fl_join = (l, sep) => l.join(sep==null?'':sep);const _fl_trim = (s) => s.trim();const _fl_upper = (s) => s.toUpperCase();const _fl_lower = (s) => s.toLowerCase();const _fl_repeat = (s, n) => s.repeat(n);const _fl_index_of = (s, p) => s.indexOf(p);const _fl_first = (l) => (l==null || l.length===0 ? null : l[0]);const _fl_last = (l) => (l==null || l.length===0 ? null : l[l.length-1]);const _fl_rest = (l) => (l==null || l.length===0 ? [] : l.slice(1));const _fl_append = (a, b) => (Array.isArray(b) ? [...a, ...b] : [...a, b]);const _fl_slice = (l, a, b) => l.slice(a, b);const _fl_map = (f, l) => l.map(x => f(x));const _fl_filter = (f, l) => l.filter(x => f(x));const _fl_reduce = (f, init, l) => l.reduce((acc, x) => f(acc, x), init);const _fl_sort = (l, cmp) => [...l].sort(cmp || ((a,b)=>a<b?-1:a>b?1:0));const _fl_reverse = (l) => [...l].reverse();const _fl_distinct = (l) => [...new Set(l)];const _fl_range = (a, b, s) => { let r=[]; let step=s||1; for(let i=a;i<b;i+=step)r.push(i); return r; };const _fl_take = (n, l) => l.slice(0, n);const _fl_drop = (n, l) => l.slice(n);const _fl_flatten = (l) => l.flat(Infinity);const _fl_get = (o, k) => (o==null ? null : (o[k]===undefined ? null : o[k]));const _fl_keys = (o) => (o==null ? [] : Object.keys(o));const _fl_values = (o) => (o==null ? [] : Object.values(o));const _fl_has_key = (o, k) => (o!=null && k in o);const _fl_merge = (...os) => Object.assign({}, ...os);const _fl_is_map = (x) => (x!=null && typeof x==='object' && !Array.isArray(x));const _fl_type_of = (x) => (x==null?'null':Array.isArray(x)?'list':typeof x);
|
|
2
|
+
console.log(_fl_index_of("hello","ll"));
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const _fl_str = (...xs) => xs.map(x => x==null?'null':String(x)).join('');const _fl_length = (x) => (x==null ? 0 : x.length);const _fl_substring = (s, a, b) => (b==null ? s.slice(a) : s.slice(a, b));const _fl_char_at = (s, i) => (s[i] || null);const _fl_replace = (s, a, b) => s.split(a).join(b);const _fl_starts_with = (s, p) => s.startsWith(p);const _fl_ends_with = (s, p) => s.endsWith(p);const _fl_contains = (s, p) => s.includes(p);const _fl_split = (s, sep) => s.split(sep);const _fl_join = (l, sep) => l.join(sep==null?'':sep);const _fl_trim = (s) => s.trim();const _fl_upper = (s) => s.toUpperCase();const _fl_lower = (s) => s.toLowerCase();const _fl_repeat = (s, n) => s.repeat(n);const _fl_index_of = (s, p) => s.indexOf(p);const _fl_first = (l) => (l==null || l.length===0 ? null : l[0]);const _fl_last = (l) => (l==null || l.length===0 ? null : l[l.length-1]);const _fl_rest = (l) => (l==null || l.length===0 ? [] : l.slice(1));const _fl_append = (a, b) => (Array.isArray(b) ? [...a, ...b] : [...a, b]);const _fl_slice = (l, a, b) => l.slice(a, b);const _fl_map = (f, l) => l.map(x => f(x));const _fl_filter = (f, l) => l.filter(x => f(x));const _fl_reduce = (f, init, l) => l.reduce((acc, x) => f(acc, x), init);const _fl_sort = (l, cmp) => [...l].sort(cmp || ((a,b)=>a<b?-1:a>b?1:0));const _fl_reverse = (l) => [...l].reverse();const _fl_distinct = (l) => [...new Set(l)];const _fl_range = (a, b, s) => { let r=[]; let step=s||1; for(let i=a;i<b;i+=step)r.push(i); return r; };const _fl_take = (n, l) => l.slice(0, n);const _fl_drop = (n, l) => l.slice(n);const _fl_flatten = (l) => l.flat(Infinity);const _fl_get = (o, k) => (o==null ? null : (o[k]===undefined ? null : o[k]));const _fl_keys = (o) => (o==null ? [] : Object.keys(o));const _fl_values = (o) => (o==null ? [] : Object.values(o));const _fl_has_key = (o, k) => (o!=null && k in o);const _fl_merge = (...os) => Object.assign({}, ...os);const _fl_is_map = (x) => (x!=null && typeof x==='object' && !Array.isArray(x));const _fl_type_of = (x) => (x==null?'null':Array.isArray(x)?'list':typeof x);
|
|
2
|
+
console.log(_fl_lower("HI"));
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const _fl_str = (...xs) => xs.map(x => x==null?'null':String(x)).join('');const _fl_length = (x) => (x==null ? 0 : x.length);const _fl_substring = (s, a, b) => (b==null ? s.slice(a) : s.slice(a, b));const _fl_char_at = (s, i) => (s[i] || null);const _fl_replace = (s, a, b) => s.split(a).join(b);const _fl_starts_with = (s, p) => s.startsWith(p);const _fl_ends_with = (s, p) => s.endsWith(p);const _fl_contains = (s, p) => s.includes(p);const _fl_split = (s, sep) => s.split(sep);const _fl_join = (l, sep) => l.join(sep==null?'':sep);const _fl_trim = (s) => s.trim();const _fl_upper = (s) => s.toUpperCase();const _fl_lower = (s) => s.toLowerCase();const _fl_repeat = (s, n) => s.repeat(n);const _fl_index_of = (s, p) => s.indexOf(p);const _fl_first = (l) => (l==null || l.length===0 ? null : l[0]);const _fl_last = (l) => (l==null || l.length===0 ? null : l[l.length-1]);const _fl_rest = (l) => (l==null || l.length===0 ? [] : l.slice(1));const _fl_append = (a, b) => (Array.isArray(b) ? [...a, ...b] : [...a, b]);const _fl_slice = (l, a, b) => l.slice(a, b);const _fl_map = (f, l) => l.map(x => f(x));const _fl_filter = (f, l) => l.filter(x => f(x));const _fl_reduce = (f, init, l) => l.reduce((acc, x) => f(acc, x), init);const _fl_sort = (l, cmp) => [...l].sort(cmp || ((a,b)=>a<b?-1:a>b?1:0));const _fl_reverse = (l) => [...l].reverse();const _fl_distinct = (l) => [...new Set(l)];const _fl_range = (a, b, s) => { let r=[]; let step=s||1; for(let i=a;i<b;i+=step)r.push(i); return r; };const _fl_take = (n, l) => l.slice(0, n);const _fl_drop = (n, l) => l.slice(n);const _fl_flatten = (l) => l.flat(Infinity);const _fl_get = (o, k) => (o==null ? null : (o[k]===undefined ? null : o[k]));const _fl_keys = (o) => (o==null ? [] : Object.keys(o));const _fl_values = (o) => (o==null ? [] : Object.values(o));const _fl_has_key = (o, k) => (o!=null && k in o);const _fl_merge = (...os) => Object.assign({}, ...os);const _fl_is_map = (x) => (x!=null && typeof x==='object' && !Array.isArray(x));const _fl_type_of = (x) => (x==null?'null':Array.isArray(x)?'list':typeof x);
|
|
2
|
+
console.log(_fl_repeat("ab",3));
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const _fl_str = (...xs) => xs.map(x => x==null?'null':String(x)).join('');const _fl_length = (x) => (x==null ? 0 : x.length);const _fl_substring = (s, a, b) => (b==null ? s.slice(a) : s.slice(a, b));const _fl_char_at = (s, i) => (s[i] || null);const _fl_replace = (s, a, b) => s.split(a).join(b);const _fl_starts_with = (s, p) => s.startsWith(p);const _fl_ends_with = (s, p) => s.endsWith(p);const _fl_contains = (s, p) => s.includes(p);const _fl_split = (s, sep) => s.split(sep);const _fl_join = (l, sep) => l.join(sep==null?'':sep);const _fl_trim = (s) => s.trim();const _fl_upper = (s) => s.toUpperCase();const _fl_lower = (s) => s.toLowerCase();const _fl_repeat = (s, n) => s.repeat(n);const _fl_index_of = (s, p) => s.indexOf(p);const _fl_first = (l) => (l==null || l.length===0 ? null : l[0]);const _fl_last = (l) => (l==null || l.length===0 ? null : l[l.length-1]);const _fl_rest = (l) => (l==null || l.length===0 ? [] : l.slice(1));const _fl_append = (a, b) => (Array.isArray(b) ? [...a, ...b] : [...a, b]);const _fl_slice = (l, a, b) => l.slice(a, b);const _fl_map = (f, l) => l.map(x => f(x));const _fl_filter = (f, l) => l.filter(x => f(x));const _fl_reduce = (f, init, l) => l.reduce((acc, x) => f(acc, x), init);const _fl_sort = (l, cmp) => [...l].sort(cmp || ((a,b)=>a<b?-1:a>b?1:0));const _fl_reverse = (l) => [...l].reverse();const _fl_distinct = (l) => [...new Set(l)];const _fl_range = (a, b, s) => { let r=[]; let step=s||1; for(let i=a;i<b;i+=step)r.push(i); return r; };const _fl_take = (n, l) => l.slice(0, n);const _fl_drop = (n, l) => l.slice(n);const _fl_flatten = (l) => l.flat(Infinity);const _fl_get = (o, k) => (o==null ? null : (o[k]===undefined ? null : o[k]));const _fl_keys = (o) => (o==null ? [] : Object.keys(o));const _fl_values = (o) => (o==null ? [] : Object.values(o));const _fl_has_key = (o, k) => (o!=null && k in o);const _fl_merge = (...os) => Object.assign({}, ...os);const _fl_is_map = (x) => (x!=null && typeof x==='object' && !Array.isArray(x));const _fl_type_of = (x) => (x==null?'null':Array.isArray(x)?'list':typeof x);
|
|
2
|
+
console.log(_fl_join(_fl_split("a,b,c",","),"-"));
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const _fl_str = (...xs) => xs.map(x => x==null?'null':String(x)).join('');const _fl_length = (x) => (x==null ? 0 : x.length);const _fl_substring = (s, a, b) => (b==null ? s.slice(a) : s.slice(a, b));const _fl_char_at = (s, i) => (s[i] || null);const _fl_replace = (s, a, b) => s.split(a).join(b);const _fl_starts_with = (s, p) => s.startsWith(p);const _fl_ends_with = (s, p) => s.endsWith(p);const _fl_contains = (s, p) => s.includes(p);const _fl_split = (s, sep) => s.split(sep);const _fl_join = (l, sep) => l.join(sep==null?'':sep);const _fl_trim = (s) => s.trim();const _fl_upper = (s) => s.toUpperCase();const _fl_lower = (s) => s.toLowerCase();const _fl_repeat = (s, n) => s.repeat(n);const _fl_index_of = (s, p) => s.indexOf(p);const _fl_first = (l) => (l==null || l.length===0 ? null : l[0]);const _fl_last = (l) => (l==null || l.length===0 ? null : l[l.length-1]);const _fl_rest = (l) => (l==null || l.length===0 ? [] : l.slice(1));const _fl_append = (a, b) => (Array.isArray(b) ? [...a, ...b] : [...a, b]);const _fl_slice = (l, a, b) => l.slice(a, b);const _fl_map = (f, l) => l.map(x => f(x));const _fl_filter = (f, l) => l.filter(x => f(x));const _fl_reduce = (f, init, l) => l.reduce((acc, x) => f(acc, x), init);const _fl_sort = (l, cmp) => [...l].sort(cmp || ((a,b)=>a<b?-1:a>b?1:0));const _fl_reverse = (l) => [...l].reverse();const _fl_distinct = (l) => [...new Set(l)];const _fl_range = (a, b, s) => { let r=[]; let step=s||1; for(let i=a;i<b;i+=step)r.push(i); return r; };const _fl_take = (n, l) => l.slice(0, n);const _fl_drop = (n, l) => l.slice(n);const _fl_flatten = (l) => l.flat(Infinity);const _fl_get = (o, k) => (o==null ? null : (o[k]===undefined ? null : o[k]));const _fl_keys = (o) => (o==null ? [] : Object.keys(o));const _fl_values = (o) => (o==null ? [] : Object.values(o));const _fl_has_key = (o, k) => (o!=null && k in o);const _fl_merge = (...os) => Object.assign({}, ...os);const _fl_is_map = (x) => (x!=null && typeof x==='object' && !Array.isArray(x));const _fl_type_of = (x) => (x==null?'null':Array.isArray(x)?'list':typeof x);
|
|
2
|
+
console.log(_fl_starts_with("hello world","hello"));
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const _fl_str = (...xs) => xs.map(x => x==null?'null':String(x)).join('');const _fl_length = (x) => (x==null ? 0 : x.length);const _fl_substring = (s, a, b) => (b==null ? s.slice(a) : s.slice(a, b));const _fl_char_at = (s, i) => (s[i] || null);const _fl_replace = (s, a, b) => s.split(a).join(b);const _fl_starts_with = (s, p) => s.startsWith(p);const _fl_ends_with = (s, p) => s.endsWith(p);const _fl_contains = (s, p) => s.includes(p);const _fl_split = (s, sep) => s.split(sep);const _fl_join = (l, sep) => l.join(sep==null?'':sep);const _fl_trim = (s) => s.trim();const _fl_upper = (s) => s.toUpperCase();const _fl_lower = (s) => s.toLowerCase();const _fl_repeat = (s, n) => s.repeat(n);const _fl_index_of = (s, p) => s.indexOf(p);const _fl_first = (l) => (l==null || l.length===0 ? null : l[0]);const _fl_last = (l) => (l==null || l.length===0 ? null : l[l.length-1]);const _fl_rest = (l) => (l==null || l.length===0 ? [] : l.slice(1));const _fl_append = (a, b) => (Array.isArray(b) ? [...a, ...b] : [...a, b]);const _fl_slice = (l, a, b) => l.slice(a, b);const _fl_map = (f, l) => l.map(x => f(x));const _fl_filter = (f, l) => l.filter(x => f(x));const _fl_reduce = (f, init, l) => l.reduce((acc, x) => f(acc, x), init);const _fl_sort = (l, cmp) => [...l].sort(cmp || ((a,b)=>a<b?-1:a>b?1:0));const _fl_reverse = (l) => [...l].reverse();const _fl_distinct = (l) => [...new Set(l)];const _fl_range = (a, b, s) => { let r=[]; let step=s||1; for(let i=a;i<b;i+=step)r.push(i); return r; };const _fl_take = (n, l) => l.slice(0, n);const _fl_drop = (n, l) => l.slice(n);const _fl_flatten = (l) => l.flat(Infinity);const _fl_get = (o, k) => (o==null ? null : (o[k]===undefined ? null : o[k]));const _fl_keys = (o) => (o==null ? [] : Object.keys(o));const _fl_values = (o) => (o==null ? [] : Object.values(o));const _fl_has_key = (o, k) => (o!=null && k in o);const _fl_merge = (...os) => Object.assign({}, ...os);const _fl_is_map = (x) => (x!=null && typeof x==='object' && !Array.isArray(x));const _fl_type_of = (x) => (x==null?'null':Array.isArray(x)?'list':typeof x);
|
|
2
|
+
console.log(_fl_trim(" hi "));
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const _fl_str = (...xs) => xs.map(x => x==null?'null':String(x)).join('');const _fl_length = (x) => (x==null ? 0 : x.length);const _fl_substring = (s, a, b) => (b==null ? s.slice(a) : s.slice(a, b));const _fl_char_at = (s, i) => (s[i] || null);const _fl_replace = (s, a, b) => s.split(a).join(b);const _fl_starts_with = (s, p) => s.startsWith(p);const _fl_ends_with = (s, p) => s.endsWith(p);const _fl_contains = (s, p) => s.includes(p);const _fl_split = (s, sep) => s.split(sep);const _fl_join = (l, sep) => l.join(sep==null?'':sep);const _fl_trim = (s) => s.trim();const _fl_upper = (s) => s.toUpperCase();const _fl_lower = (s) => s.toLowerCase();const _fl_repeat = (s, n) => s.repeat(n);const _fl_index_of = (s, p) => s.indexOf(p);const _fl_first = (l) => (l==null || l.length===0 ? null : l[0]);const _fl_last = (l) => (l==null || l.length===0 ? null : l[l.length-1]);const _fl_rest = (l) => (l==null || l.length===0 ? [] : l.slice(1));const _fl_append = (a, b) => (Array.isArray(b) ? [...a, ...b] : [...a, b]);const _fl_slice = (l, a, b) => l.slice(a, b);const _fl_map = (f, l) => l.map(x => f(x));const _fl_filter = (f, l) => l.filter(x => f(x));const _fl_reduce = (f, init, l) => l.reduce((acc, x) => f(acc, x), init);const _fl_sort = (l, cmp) => [...l].sort(cmp || ((a,b)=>a<b?-1:a>b?1:0));const _fl_reverse = (l) => [...l].reverse();const _fl_distinct = (l) => [...new Set(l)];const _fl_range = (a, b, s) => { let r=[]; let step=s||1; for(let i=a;i<b;i+=step)r.push(i); return r; };const _fl_take = (n, l) => l.slice(0, n);const _fl_drop = (n, l) => l.slice(n);const _fl_flatten = (l) => l.flat(Infinity);const _fl_get = (o, k) => (o==null ? null : (o[k]===undefined ? null : o[k]));const _fl_keys = (o) => (o==null ? [] : Object.keys(o));const _fl_values = (o) => (o==null ? [] : Object.values(o));const _fl_has_key = (o, k) => (o!=null && k in o);const _fl_merge = (...os) => Object.assign({}, ...os);const _fl_is_map = (x) => (x!=null && typeof x==='object' && !Array.isArray(x));const _fl_type_of = (x) => (x==null?'null':Array.isArray(x)?'list':typeof x);
|
|
2
|
+
console.log(_fl_upper("hi"));
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const _fl_str = (...xs) => xs.map(x => x==null?'null':String(x)).join('');const _fl_length = (x) => (x==null ? 0 : x.length);const _fl_substring = (s, a, b) => (b==null ? s.slice(a) : s.slice(a, b));const _fl_first = (l) => (l==null || l.length===0 ? null : l[0]);const _fl_last = (l) => (l==null || l.length===0 ? null : l[l.length-1]);const _fl_rest = (l) => (l==null || l.length===0 ? [] : l.slice(1));const _fl_append = (a, b) => (Array.isArray(b) ? [...a, ...b] : [...a, b]);const _fl_get = (o, k) => (o==null ? null : (o[k]===undefined ? null : o[k]));
|
|
2
|
+
console.log(Math.abs((0-42)));
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const _fl_str = (...xs) => xs.map(x => x==null?'null':String(x)).join('');const _fl_length = (x) => (x==null ? 0 : x.length);const _fl_substring = (s, a, b) => (b==null ? s.slice(a) : s.slice(a, b));const _fl_first = (l) => (l==null || l.length===0 ? null : l[0]);const _fl_last = (l) => (l==null || l.length===0 ? null : l[l.length-1]);const _fl_rest = (l) => (l==null || l.length===0 ? [] : l.slice(1));const _fl_append = (a, b) => (Array.isArray(b) ? [...a, ...b] : [...a, b]);const _fl_get = (o, k) => (o==null ? null : (o[k]===undefined ? null : o[k]));
|
|
2
|
+
console.log((3));
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const _fl_str = (...xs) => xs.map(x => x==null?'null':String(x)).join('');const _fl_length = (x) => (x==null ? 0 : x.length);const _fl_substring = (s, a, b) => (b==null ? s.slice(a) : s.slice(a, b));const _fl_first = (l) => (l==null || l.length===0 ? null : l[0]);const _fl_last = (l) => (l==null || l.length===0 ? null : l[l.length-1]);const _fl_rest = (l) => (l==null || l.length===0 ? [] : l.slice(1));const _fl_append = (a, b) => (Array.isArray(b) ? [...a, ...b] : [...a, b]);const _fl_get = (o, k) => (o==null ? null : (o[k]===undefined ? null : o[k]));
|
|
2
|
+
((()=>{let g=85;return console.log(((g>=90)?"A":((g>=80)?"B":(null?"F":null))));})());
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const _fl_str = (...xs) => xs.map(x => x==null?'null':String(x)).join('');const _fl_length = (x) => (x==null ? 0 : x.length);const _fl_substring = (s, a, b) => (b==null ? s.slice(a) : s.slice(a, b));const _fl_first = (l) => (l==null || l.length===0 ? null : l[0]);const _fl_last = (l) => (l==null || l.length===0 ? null : l[l.length-1]);const _fl_rest = (l) => (l==null || l.length===0 ? [] : l.slice(1));const _fl_append = (a, b) => (Array.isArray(b) ? [...a, ...b] : [...a, b]);const _fl_get = (o, k) => (o==null ? null : (o[k]===undefined ? null : o[k]));
|
|
2
|
+
console.log((null?1:(null?2:(null?99:null))));
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const _fl_str = (...xs) => xs.map(x => x==null?'null':String(x)).join('');const _fl_length = (x) => (x==null ? 0 : x.length);const _fl_substring = (s, a, b) => (b==null ? s.slice(a) : s.slice(a, b));const _fl_first = (l) => (l==null || l.length===0 ? null : l[0]);const _fl_last = (l) => (l==null || l.length===0 ? null : l[l.length-1]);const _fl_rest = (l) => (l==null || l.length===0 ? [] : l.slice(1));const _fl_append = (a, b) => (Array.isArray(b) ? [...a, ...b] : [...a, b]);const _fl_get = (o, k) => (o==null ? null : (o[k]===undefined ? null : o[k]));
|
|
2
|
+
(()=>{console.log(1);console.log(2);return console.log(3);})();
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const _fl_str = (...xs) => xs.map(x => x==null?'null':String(x)).join('');const _fl_length = (x) => (x==null ? 0 : x.length);const _fl_substring = (s, a, b) => (b==null ? s.slice(a) : s.slice(a, b));const _fl_first = (l) => (l==null || l.length===0 ? null : l[0]);const _fl_last = (l) => (l==null || l.length===0 ? null : l[l.length-1]);const _fl_rest = (l) => (l==null || l.length===0 ? [] : l.slice(1));const _fl_append = (a, b) => (Array.isArray(b) ? [...a, ...b] : [...a, b]);const _fl_get = (o, k) => (o==null ? null : (o[k]===undefined ? null : o[k]));
|
|
2
|
+
const fact = (n)=>((n<=1)?1:(n*fact((n-1))));
|
|
3
|
+
console.log(fact(20));
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const _fl_str = (...xs) => xs.map(x => x==null?'null':String(x)).join('');const _fl_length = (x) => (x==null ? 0 : x.length);const _fl_substring = (s, a, b) => (b==null ? s.slice(a) : s.slice(a, b));const _fl_first = (l) => (l==null || l.length===0 ? null : l[0]);const _fl_last = (l) => (l==null || l.length===0 ? null : l[l.length-1]);const _fl_rest = (l) => (l==null || l.length===0 ? [] : l.slice(1));const _fl_append = (a, b) => (Array.isArray(b) ? [...a, ...b] : [...a, b]);const _fl_get = (o, k) => (o==null ? null : (o[k]===undefined ? null : o[k]));
|
|
2
|
+
const fib = (n)=>((n<2)?n:(fib((n-1))+fib((n-2))));
|
|
3
|
+
console.log(fib(25));
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const _fl_str = (...xs) => xs.map(x => x==null?'null':String(x)).join('');const _fl_length = (x) => (x==null ? 0 : x.length);const _fl_substring = (s, a, b) => (b==null ? s.slice(a) : s.slice(a, b));const _fl_first = (l) => (l==null || l.length===0 ? null : l[0]);const _fl_last = (l) => (l==null || l.length===0 ? null : l[l.length-1]);const _fl_rest = (l) => (l==null || l.length===0 ? [] : l.slice(1));const _fl_append = (a, b) => (Array.isArray(b) ? [...a, ...b] : [...a, b]);const _fl_get = (o, k) => (o==null ? null : (o[k]===undefined ? null : o[k]));
|
|
2
|
+
console.log(_fl_length("hello"));
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const _fl_str = (...xs) => xs.map(x => x==null?'null':String(x)).join('');const _fl_length = (x) => (x==null ? 0 : x.length);const _fl_substring = (s, a, b) => (b==null ? s.slice(a) : s.slice(a, b));const _fl_first = (l) => (l==null || l.length===0 ? null : l[0]);const _fl_last = (l) => (l==null || l.length===0 ? null : l[l.length-1]);const _fl_rest = (l) => (l==null || l.length===0 ? [] : l.slice(1));const _fl_append = (a, b) => (Array.isArray(b) ? [...a, ...b] : [...a, b]);const _fl_get = (o, k) => (o==null ? null : (o[k]===undefined ? null : o[k]));
|
|
2
|
+
((()=>{let x=5;let y=10;return console.log((x+y));})());
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const _fl_str = (...xs) => xs.map(x => x==null?'null':String(x)).join('');const _fl_length = (x) => (x==null ? 0 : x.length);const _fl_substring = (s, a, b) => (b==null ? s.slice(a) : s.slice(a, b));const _fl_first = (l) => (l==null || l.length===0 ? null : l[0]);const _fl_last = (l) => (l==null || l.length===0 ? null : l[l.length-1]);const _fl_rest = (l) => (l==null || l.length===0 ? [] : l.slice(1));const _fl_append = (a, b) => (Array.isArray(b) ? [...a, ...b] : [...a, b]);const _fl_get = (o, k) => (o==null ? null : (o[k]===undefined ? null : o[k]));
|
|
2
|
+
((()=>{let x=3;let y=4;return console.log((x*y));})());
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const _fl_str = (...xs) => xs.map(x => x==null?'null':String(x)).join('');const _fl_length = (x) => (x==null ? 0 : x.length);const _fl_substring = (s, a, b) => (b==null ? s.slice(a) : s.slice(a, b));const _fl_first = (l) => (l==null || l.length===0 ? null : l[0]);const _fl_last = (l) => (l==null || l.length===0 ? null : l[l.length-1]);const _fl_rest = (l) => (l==null || l.length===0 ? [] : l.slice(1));const _fl_append = (a, b) => (Array.isArray(b) ? [...a, ...b] : [...a, b]);const _fl_get = (o, k) => (o==null ? null : (o[k]===undefined ? null : o[k]));
|
|
2
|
+
const add = (a,b)=>(a+b);
|
|
3
|
+
console.log(add(_fl_get([30],1),5));
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const _fl_str = (...xs) => xs.map(x => x==null?'null':String(x)).join('');const _fl_length = (x) => (x==null ? 0 : x.length);const _fl_substring = (s, a, b) => (b==null ? s.slice(a) : s.slice(a, b));const _fl_first = (l) => (l==null || l.length===0 ? null : l[0]);const _fl_last = (l) => (l==null || l.length===0 ? null : l[l.length-1]);const _fl_rest = (l) => (l==null || l.length===0 ? [] : l.slice(1));const _fl_append = (a, b) => (Array.isArray(b) ? [...a, ...b] : [...a, b]);const _fl_get = (o, k) => (o==null ? null : (o[k]===undefined ? null : o[k]));
|
|
2
|
+
console.log(Math.min(2));
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const _fl_str = (...xs) => xs.map(x => x==null?'null':String(x)).join('');const _fl_length = (x) => (x==null ? 0 : x.length);const _fl_substring = (s, a, b) => (b==null ? s.slice(a) : s.slice(a, b));const _fl_first = (l) => (l==null || l.length===0 ? null : l[0]);const _fl_last = (l) => (l==null || l.length===0 ? null : l[l.length-1]);const _fl_rest = (l) => (l==null || l.length===0 ? [] : l.slice(1));const _fl_append = (a, b) => (Array.isArray(b) ? [...a, ...b] : [...a, b]);const _fl_get = (o, k) => (o==null ? null : (o[k]===undefined ? null : o[k]));
|
|
2
|
+
console.log((null||null||42));
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const _fl_str = (...xs) => xs.map(x => x==null?'null':String(x)).join('');const _fl_length = (x) => (x==null ? 0 : x.length);const _fl_substring = (s, a, b) => (b==null ? s.slice(a) : s.slice(a, b));const _fl_first = (l) => (l==null || l.length===0 ? null : l[0]);const _fl_last = (l) => (l==null || l.length===0 ? null : l[l.length-1]);const _fl_rest = (l) => (l==null || l.length===0 ? [] : l.slice(1));const _fl_append = (a, b) => (Array.isArray(b) ? [...a, ...b] : [...a, b]);const _fl_get = (o, k) => (o==null ? null : (o[k]===undefined ? null : o[k]));
|
|
2
|
+
console.log(_fl_str("x=",5," y=",10));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
console.log(((()=>{let n=10;let p=1;while(true){let __r=(()=>{return ((n===0)?p:{__recur:true,a:[(n-1),(p*n)]});})();if(__r&&__r.__recur){[n,p]=__r.a;continue;}return __r;}})()));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
console.log(((()=>{let i=0;let acc=0;while(true){let __r=(()=>{return ((i>=10001)?acc:{__recur:true,a:[(i+1),(acc+i)]});})();if(__r&&__r.__recur){[i,acc]=__r.a;continue;}return __r;}})()));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
console.log((()=>{try{return (()=>{throw new Error(String("boom"))})();}catch(e){return "caught";}})())
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
;; AI 라이브러리 — 벡터 연산 + 프롬프트 + 순위 결정
|
|
2
|
+
;; Phase 3-D: AI 에이전트 핵심 함수
|
|
3
|
+
|
|
4
|
+
;; 1️⃣ vector-add — 벡터 덧셈
|
|
5
|
+
;; [1 2 3] + [4 5 6] = [5 7 9]
|
|
6
|
+
(defun vector-add [v1 v2]
|
|
7
|
+
(map (fn [i] (+ (get v1 i) (get v2 i)))
|
|
8
|
+
(range 0 (length v1))))
|
|
9
|
+
|
|
10
|
+
;; 2️⃣ vector-dot — 내적 (dot product)
|
|
11
|
+
;; [1 0 0] · [0 1 0] = 0
|
|
12
|
+
;; [1 2 3] · [4 5 6] = 1*4 + 2*5 + 3*6 = 32
|
|
13
|
+
(defun vector-dot [v1 v2]
|
|
14
|
+
(reduce (fn [acc i]
|
|
15
|
+
(+ acc (* (get v1 i) (get v2 i))))
|
|
16
|
+
0
|
|
17
|
+
(range 0 (length v1))))
|
|
18
|
+
|
|
19
|
+
;; 3️⃣ vector-magnitude — 벡터 크기 (norm)
|
|
20
|
+
;; |[3 4]| = sqrt(9 + 16) = 5
|
|
21
|
+
(defun vector-magnitude [v]
|
|
22
|
+
(math-sqrt (vector-dot v v)))
|
|
23
|
+
|
|
24
|
+
;; 4️⃣ cosine-sim — 코사인 유사도
|
|
25
|
+
;; 범위: -1 (반대 방향) ~ 1 (같은 방향)
|
|
26
|
+
;; 수직 벡터: 0
|
|
27
|
+
(defun cosine-sim [v1 v2]
|
|
28
|
+
(let [[dot (vector-dot v1 v2)]
|
|
29
|
+
[mag1 (vector-magnitude v1)]
|
|
30
|
+
[mag2 (vector-magnitude v2)]]
|
|
31
|
+
(if (or (= mag1 0) (= mag2 0))
|
|
32
|
+
0 ; 크기가 0이면 유사도 0
|
|
33
|
+
(/ dot (* mag1 mag2)))))
|
|
34
|
+
|
|
35
|
+
;; 5️⃣ score-candidates — 후보 점수 계산
|
|
36
|
+
;; 결과: [{:idx 0 :score 0.95} {:idx 1 :score 0.87} ...]
|
|
37
|
+
(defun score-candidates [query candidates]
|
|
38
|
+
(map-indexed (fn [idx cand]
|
|
39
|
+
{:idx idx :score (cosine-sim query cand)})
|
|
40
|
+
candidates))
|
|
41
|
+
|
|
42
|
+
;; 6️⃣ prompt-template — 프롬프트 템플릿 채우기
|
|
43
|
+
;; "Hello {name}, your query: {query}" + {:name "Alice" :query "help"}
|
|
44
|
+
;; → "Hello Alice, your query: help"
|
|
45
|
+
(defun prompt-template [template vars]
|
|
46
|
+
(reduce (fn [acc [key val]]
|
|
47
|
+
(str-replace acc
|
|
48
|
+
(str "{" key "}")
|
|
49
|
+
(str val)))
|
|
50
|
+
template
|
|
51
|
+
(map-entries vars)))
|
|
52
|
+
|
|
53
|
+
;; 7️⃣ top-k-retrieval — 상위 K개 반환 (점수 내림차순)
|
|
54
|
+
;; 입력: [{:idx 0 :score 0.9} {:idx 1 :score 0.7} {:idx 2 :score 0.95}]
|
|
55
|
+
;; K=2 → [{:idx 2 :score 0.95} {:idx 0 :score 0.9}]
|
|
56
|
+
(defun top-k-retrieval [scored-list k]
|
|
57
|
+
(take k
|
|
58
|
+
(reverse (sort scored-list
|
|
59
|
+
(fn [a b] (< (get a :score) (get b :score)))))))
|
|
60
|
+
|
|
61
|
+
;; ─────────────────────────────────────────────────────
|
|
62
|
+
;; 유틸리티 함수
|
|
63
|
+
;; ─────────────────────────────────────────────────────
|
|
64
|
+
|
|
65
|
+
;; map-indexed — 인덱스와 함께 매핑
|
|
66
|
+
(defun map-indexed [f lst]
|
|
67
|
+
(let [[indices (range 0 (length lst))]]
|
|
68
|
+
(map (fn [i] (f i (get lst i))) indices)))
|
|
69
|
+
|
|
70
|
+
;; map-entries — 맵의 키-값 쌍 리스트로 변환
|
|
71
|
+
;; {:a 1 :b 2} → [[:a 1] [:b 2]]
|
|
72
|
+
(defun map-entries [m]
|
|
73
|
+
(map (fn [k] [k (get m k)]) (keys m)))
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
;; self/stdlib/assert.fl — Phase 26 Part 3
|
|
2
|
+
;; 고급 assertion 함수
|
|
3
|
+
|
|
4
|
+
[FUNC assert-matches :params [val pattern]
|
|
5
|
+
:body (if (regex-match pattern (str val)) true
|
|
6
|
+
(throw (str "assert-matches failed: " val " does not match " pattern)))]
|
|
7
|
+
|
|
8
|
+
[FUNC assert-includes :params [list item]
|
|
9
|
+
:body (if (contains? list item) true
|
|
10
|
+
(throw (str "assert-includes failed: " item " not in " list)))]
|
|
11
|
+
|
|
12
|
+
[FUNC assert-excludes :params [list item]
|
|
13
|
+
:body (if (not (contains? list item)) true
|
|
14
|
+
(throw (str "assert-excludes failed: " item " found in " list)))]
|
|
15
|
+
|
|
16
|
+
[FUNC assert-length :params [coll len]
|
|
17
|
+
:body (if (= (length coll) len) true
|
|
18
|
+
(throw (str "assert-length failed: expected " len " got " (length coll))))]
|
|
19
|
+
|
|
20
|
+
[FUNC assert-range :params [val min max]
|
|
21
|
+
:body (if (and (>= val min) (<= val max)) true
|
|
22
|
+
(throw (str "assert-range failed: " val " not in [" min "," max "]")))]
|
|
23
|
+
|
|
24
|
+
[FUNC assert-type :params [val type]
|
|
25
|
+
:body (if (= (typeof val) type) true
|
|
26
|
+
(throw (str "assert-type failed: expected " type " got " (typeof val))))]
|
|
27
|
+
|
|
28
|
+
[FUNC assert-throws :params [fn]
|
|
29
|
+
:body (try (do (fn) false)
|
|
30
|
+
(catch e true))]
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
;; self/stdlib/async.fl — Phase 27
|
|
2
|
+
;; 비동기 연산 (Promise-like patterns)
|
|
3
|
+
;; 단순화: self-parser 호환 버전
|
|
4
|
+
|
|
5
|
+
[FUNC promise-new :params [executor]
|
|
6
|
+
:body (promise_new executor)]
|
|
7
|
+
|
|
8
|
+
[FUNC promise-resolve :params [value]
|
|
9
|
+
:body (promise_resolve value)]
|
|
10
|
+
|
|
11
|
+
[FUNC promise-reject :params [reason]
|
|
12
|
+
:body (promise_reject reason)]
|
|
13
|
+
|
|
14
|
+
[FUNC promise-then :params [promise handler]
|
|
15
|
+
:body (promise_then promise handler)]
|
|
16
|
+
|
|
17
|
+
[FUNC promise-catch :params [promise handler]
|
|
18
|
+
:body (promise_catch promise handler)]
|
|
19
|
+
|
|
20
|
+
[FUNC promise-finally :params [promise handler]
|
|
21
|
+
:body (promise_finally promise handler)]
|
|
22
|
+
|
|
23
|
+
[FUNC promise-all :params [promises]
|
|
24
|
+
:body (promise_all promises)]
|
|
25
|
+
|
|
26
|
+
[FUNC promise-race :params [promises]
|
|
27
|
+
:body (promise_race promises)]
|
|
28
|
+
|
|
29
|
+
[FUNC promise-any :params [promises]
|
|
30
|
+
:body (promise_any promises)]
|
|
31
|
+
|
|
32
|
+
[FUNC timeout :params [ms]
|
|
33
|
+
:body (timeout (floor ms))]
|
|
34
|
+
|
|
35
|
+
[FUNC delay :params [ms]
|
|
36
|
+
:body (delay (floor ms))]
|
|
37
|
+
|
|
38
|
+
[FUNC once :params [fn]
|
|
39
|
+
:body (once_impl fn)]
|
|
40
|
+
|
|
41
|
+
[FUNC debounce :params [fn ms]
|
|
42
|
+
:body (debounce_impl fn (floor ms))]
|
|
43
|
+
|
|
44
|
+
[FUNC throttle :params [fn ms]
|
|
45
|
+
:body (throttle_impl fn (floor ms))]
|
|
46
|
+
|
|
47
|
+
[FUNC retry :params [fn max-attempts]
|
|
48
|
+
:body (retry_impl fn (floor max-attempts))]
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
;; self/stdlib/base64.fl — Phase 26 Part 3
|
|
2
|
+
;; Base64 인코딩/디코딩
|
|
3
|
+
|
|
4
|
+
[FUNC base64-encode :params [s]
|
|
5
|
+
:body (let [[b (str s)]]
|
|
6
|
+
(base64_encode b))]
|
|
7
|
+
|
|
8
|
+
[FUNC base64-decode :params [s]
|
|
9
|
+
:body (base64_decode (str s))]
|
|
10
|
+
|
|
11
|
+
[FUNC is-base64? :params [s]
|
|
12
|
+
:body (let [[pat "^[A-Za-z0-9+/]*={0,2}$"]]
|
|
13
|
+
(if (= (% (length s) 4) 0)
|
|
14
|
+
(regex-match pat s)
|
|
15
|
+
false))]
|
|
16
|
+
|
|
17
|
+
[FUNC base64-safe-encode :params [s]
|
|
18
|
+
:body (let [[encoded (base64-encode s)]]
|
|
19
|
+
(replace (replace (str encoded) "+" "-") "/" "_"))]
|
|
20
|
+
|
|
21
|
+
[FUNC base64-safe-decode :params [s]
|
|
22
|
+
:body (base64-decode (replace (replace (str s) "-" "+") "_" "/"))]
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
;; self/stdlib/binary.fl — Phase 26 Part 3
|
|
2
|
+
;; 비트 연산
|
|
3
|
+
|
|
4
|
+
[FUNC bit-and :params [a b] :body (bit-and-op a b)]
|
|
5
|
+
[FUNC bit-and-op :params [a b] :body (floor (/ (mod (* a b) 256) 1))]
|
|
6
|
+
|
|
7
|
+
[FUNC bit-or :params [a b] :body (floor (+ (- a (bit-and a b)) (- b (bit-and a b))))]
|
|
8
|
+
|
|
9
|
+
[FUNC bit-xor :params [a b] :body (floor (+ (bit-and a (bit-or 255 (- b 1))) (bit-and b (bit-or 255 (- a 1)))))]
|
|
10
|
+
|
|
11
|
+
[FUNC bit-not :params [a] :body (- 255 (mod (floor a) 256))]
|
|
12
|
+
|
|
13
|
+
[FUNC bit-shift-left :params [n bits] :body (* n (pow 2 bits))]
|
|
14
|
+
|
|
15
|
+
[FUNC bit-shift-right :params [n bits] :body (floor (/ n (pow 2 bits)))]
|
|
16
|
+
|
|
17
|
+
[FUNC bit-count-ones :params [n]
|
|
18
|
+
:body (bit-count-loop (mod (floor n) 256) 0 0)]
|
|
19
|
+
[FUNC bit-count-loop :params [n i count]
|
|
20
|
+
:body (if (>= i 8) count
|
|
21
|
+
(bit-count-loop (floor (/ n 2)) (+ i 1)
|
|
22
|
+
(+ count (mod n 2))))]
|
|
23
|
+
|
|
24
|
+
[FUNC bytes-to-hex :params [bytes]
|
|
25
|
+
:body (bytes-hex-loop bytes 0 "")]
|
|
26
|
+
[FUNC bytes-hex-loop :params [bytes i acc]
|
|
27
|
+
:body (if (>= i (length bytes)) acc
|
|
28
|
+
(let [[byte (get bytes i)]
|
|
29
|
+
[hex (pad-zero (floor (% byte 256)) 2)]]
|
|
30
|
+
(bytes-hex-loop bytes (+ i 1) (str acc hex))))]
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
;; self/stdlib/build.fl — Phase 29
|
|
2
|
+
;; 빌드 시스템 (정적 생성, 번들링, 최적화)
|
|
3
|
+
|
|
4
|
+
[FUNC build-static :params [input-dir output-dir]
|
|
5
|
+
:body (build-static-recursive (str input-dir) (str output-dir) (file_list (str input-dir)))]
|
|
6
|
+
[FUNC build-static-recursive :params [input output files]
|
|
7
|
+
:body (if (= (length files) 0) (str "Built to " output)
|
|
8
|
+
(let [[file (get files 0)]]
|
|
9
|
+
(do (build-static-file (str input "/" file) (str output "/" file))
|
|
10
|
+
(build-static-recursive input output (rest files)))))]
|
|
11
|
+
|
|
12
|
+
[FUNC build-static-file :params [src dest]
|
|
13
|
+
:body (if (ends-with? (str src) ".fl")
|
|
14
|
+
(do (file_write (str dest)
|
|
15
|
+
(node bootstrap.js run (str src)))
|
|
16
|
+
(str "✅ " src " → " dest))
|
|
17
|
+
(file_copy (str src) (str dest)))]
|
|
18
|
+
|
|
19
|
+
[FUNC bundle-assets :params [dir]
|
|
20
|
+
:body (bundle-assets-loop (file_list (str dir)) (str dir) (list))]
|
|
21
|
+
[FUNC bundle-assets-loop :params [files dir acc]
|
|
22
|
+
:body (if (= (length files) 0) acc
|
|
23
|
+
(let [[file (get files 0)]
|
|
24
|
+
[path (str dir "/" file)]]
|
|
25
|
+
(bundle-assets-loop (rest files) dir
|
|
26
|
+
(if (is-asset-file? path)
|
|
27
|
+
(append acc (list path))
|
|
28
|
+
acc))))]
|
|
29
|
+
|
|
30
|
+
[FUNC is-asset-file? :params [path]
|
|
31
|
+
:body (let [[ext (lower (path-extname (str path)))]]
|
|
32
|
+
(contains? (list ".css" ".js" ".png" ".jpg" ".svg" ".webp")
|
|
33
|
+
ext))]
|
|
34
|
+
|
|
35
|
+
[FUNC minify-html :params [html]
|
|
36
|
+
:body (let [[content (str html)]]
|
|
37
|
+
(replace (replace (replace content "\n" " ") " " " ") " " " "))]
|
|
38
|
+
|
|
39
|
+
[FUNC minify-css :params [css]
|
|
40
|
+
:body (replace (replace (str css) "\n" "") " { " "{")]
|
|
41
|
+
|
|
42
|
+
[FUNC minify-js :params [js]
|
|
43
|
+
:body (str js)]
|
|
44
|
+
|
|
45
|
+
[FUNC optimize-images :params [dir]
|
|
46
|
+
:body (optimize-images-loop (file_list (str dir)) (str dir))]
|
|
47
|
+
[FUNC optimize-images-loop :params [files dir]
|
|
48
|
+
:body (if (= (length files) 0) (str "Images optimized in " dir)
|
|
49
|
+
(let [[file (get files 0)]
|
|
50
|
+
[path (str dir "/" file)]]
|
|
51
|
+
(do (if (is-image-file? path)
|
|
52
|
+
(image_optimize path 80))
|
|
53
|
+
(optimize-images-loop (rest files) dir))))]
|
|
54
|
+
|
|
55
|
+
[FUNC generate-sitemap :params [pages domain]
|
|
56
|
+
:body (str "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
|
|
57
|
+
"<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">"
|
|
58
|
+
(generate-sitemap-entries pages (str domain))
|
|
59
|
+
"</urlset>")]
|
|
60
|
+
[FUNC generate-sitemap-entries :params [pages domain]
|
|
61
|
+
:body (if (= (length pages) 0) ""
|
|
62
|
+
(str "<url><loc>" domain "/" (get pages 0) "</loc></url>"
|
|
63
|
+
(generate-sitemap-entries (rest pages) domain)))]
|
|
64
|
+
|
|
65
|
+
[FUNC build-report :params [build-time file-count total-size]
|
|
66
|
+
:body (list
|
|
67
|
+
(str "Build Time: " build-time "ms")
|
|
68
|
+
(str "Files: " file-count)
|
|
69
|
+
(str "Total Size: " (/ total-size 1024) "KB"))]
|