# ning-lang **Repository Path**: waWAwlou/ning-lang ## Basic Information - **Project Name**: ning-lang - **Description**: No description available - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-02 - **Last Updated**: 2026-10-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 凝语言 Ning · v0.1.0 发行包 一门「像 Python 一样能分发安装」的白盒可解释决策语言。核心是把安全/业务决策写成**可读、可组合、带证据链**的代码,而不是黑盒模型。 ## 这是什么 - **凝(Ning)**:前缀式 Lisp 风格 DSL,蒸馏了 Python / ML / F# / Rust / Lisp 的精华(不可变默认、管道、模式匹配、递归、编译期宏、同像性)。 - **第六端可移植**:同一份程序可跑在 **解释器 / 原生 C 编译 exe / WASM / JS / RISC-V 字节码** 多个后端,语义对齐。 - **白盒可解释**:`decide` 范式把「规则」当语言构造,决策带证据链、置信度是硬分支,零外部模型零网络。 本发行包 = **解释器 + REPL + 标准库 + 原生编译 + 入门文档**,对齐 CPython 的分发形态。 ## 目录 ``` E:\ning-lang\ ├─ ning.py 命令行前端(run / repl / build) ├─ ning.bat 启动器(双击或命令行 ning <子命令>) ├─ ning_base.py 多后端解释器内核(ning/forth/decide/logic) ├─ ning_c.py C 后端:凝 → C 源码 → gcc → 原生 exe ├─ ning_wasm.py WASM 第五端 ├─ ning_decide.py decide 决策范式(白盒证据链) ├─ ning_js.py / ning_numeric.py / ning_cache.py / ning_guard.py 配套模块 ├─ wasm_vm.py / wasm_backend.ning / c_backend.ning 字节码 / 编译后端 ├─ std.ning 标准库(纯凝实现,随包预载) ├─ example.ning 全特性演示(run / repl 看) ├─ showcase.ning SRC 资产风险流水线实战(run / repl 看) ├─ fib.ning 可编译最小示例(fn/let/if/递归/print) ├─ assets.ning 可编译实战示例(管道/filter/map/match/print,SRC 主题) ├─ grade.ning 成绩分级器(list/map/filter/match/管道,入门友好 Demo) ├─ 教程.md 从 hello 到 decide 的渐进教程 └─ README.md 本文件 ``` ## 三种用法 ```bat ning run example.ning 解释执行一个 .ning 文件 ning repl 进入交互式 REPL(定义跨行保留,:q 退出) ning build fib.ning -o fib.exe 编译成 C 再 gcc 成原生 exe(无 gcc 则只产出 .c) ``` 桌面也有 **「凝语言 REPL.bat」** 双击即进交互模式。 ## 可编译子集(build 原生 exe) `ning build` 走 C 后端,支持**可移植子集**: - 值:数字 / 字符串 / 布尔 / 列表 / 符号 / nil - 结构:`fn` `let`(含 body)`if` `quote` `match`(编译期脱糖) - 原语:算术/比较/logic/list/str/map/filter/`..`/print/contains?/exp … - 管道 `|>`(折叠,值作末参) - 递归:通过**顶层 `export` 定义**(函数进全局环境,互调/自调走环境链查找) - 标准库 `std.ning` 一并编译进 exe **build 不支持**(解释器 `run`/`repl` 支持,属语言高阶特性): - `macro` 编译期宏(展开发生在求值期,C 后端不做宏展开) - `range` / `read-csv` / `decide` 等第一刀未收录原语(语义依赖运行环境) - 嵌套 `let name (fn ...) body` 的**自递归**(其闭包捕获父帧,递归名查不到;请用顶层 `export` 递归,参 `fib.ning` / `assets.ning`) ## build vs run 的已知边界(非 bug,已对齐) - `print` 原语:数字/字符串在两端逐字一致;其余类型经可读 JSON 打印。 - 程序末值的回显:C 端用 JSON(`[1,2,3]` / `null`),解释端用 Lisp 风(`(1 2 3)` / `None`)——仅影响「最后一行返回值」的展示,不影响 `print` 输出。 - `reverse` 等列表函数面向**列表**;传字符串在 C 端会类型错误(解释端宽容地给字符表)。 ## 验证状态(2026-09-27) | 路径 | 验证程序 | 结果 | |------|----------|------| | `ning run` | example / showcase / fib / assets | ✅ 输出符合预期 | | `ning repl` | 多行 + 函数 + print + 标准库 | ✅ 跨行定义持久 | | `ning build` | fib.ning → exe | ✅ 输出与 run 逐字一致 | | `ning build` | assets.ning → exe | ✅ 输出与 run 逐字一致(管道/列表/递归) | ## 快速开始 ```bat ning repl ning> (+ 1 2 3) 6 ning> (let sq (fn (n) (* n n))) ning> (sq 9) 81 ning> :q ``` 详见 `教程.md`。