页:1
k 是描述代数数据形状和组合的一种小语言 改变他们。 程序是一阶部分功能,叫做 关系由产品、有标签的工会和组成而来。 命名图案 描述可重复使用的计划;编译器生成结构输入/输出合同.
这个 关于泽诺多的文件 介绍语言. 内容 LaTeX 来源 财务报告和审定财务报表 专题报告 在这里 仓库.
一个小例子
此关系互换两个字段:
swap = { .x y, .y x };
{ {} |hello x, {} |world y } swap
每个字段表达式得到相同的输入. 结果 world 下级
x 财务报告和审定财务报表 hello 下级 y. 某些投入可能无法定义关系
命令选择 <f, g> 尝试 g 何时 f 返回未定义.
所有值都是由产品和变体所形成的. 整数和字符串 库所定义的结构,有用于熟悉的外部表达的解码器.
从源头运行
使用Node.js 22+进行开发并进行浏览器测试. 已出版的运行时间支持Node.js 18+.
npm install
node repl.mjs
npm install 生成解析器。 从仓库的另一个终端
root,尝试完整的管道:
node codecs/unit.mjs --parse | node k.mjs '{} |ok' | node codecs/k-print.mjs
它印着 "ok"2. 管道带有二进制图并附有有效载荷;
解码器命令处理文本边界.
要曝光您路径上的命令, 请运行 npm link相应的管道是:
k-unit --parse | k '{} |ok' | k-print
构建独立浏览器 REPL npm run build:repl-html,然后打开
repl.html见 走过 递归
关系、图书馆和密码.
图书馆和实例
| 文件 | 目的 |
|---|---|
| 常规.k | 独立位, Unicode 字符串, 以及自托管的图案计划(bit[], (中文(简体) ), bits[], (中文(简体) ), list[X], (中文(简体) ), string[], (中文(简体) ), pattern[](中文(简体) ) |
| 自由/遗传学.k | 代数类型,二进制尝试,以及字符串/比特编码器(bool[], (中文(简体) ), order[], (中文(简体) ), opt[V], (中文(简体) ), btrie[V], (中文(简体) ), string_to_bits, (中文(简体) ), bits_to_string(中文(简体) ) |
| lib/整数.k | 已签名的任意精度整数算术( X)int[], (中文(简体) ), nat, (中文(简体) ), int, (中文(简体) ), plus, (中文(简体) ), minus, (中文(简体) ), times 通过卡拉苏巴, divmod, (中文(简体) ), div, (中文(简体) ), mod, (中文(简体) ), gcd, (中文(简体) ), lcm(中文(简体) ) |
| 页:1 | 二进制64类型、上游、否定和合理转换(float64[], (中文(简体) ), negate_float64, (中文(简体) ), bits_to_float64, (中文(简体) ), ratio_to_float64(中文(简体) ) |
| 独立/djson.k | RFC 8259 JSON 分析器(parse_json)和动态JSON操作(djson[], (中文(简体) ), get, (中文(简体) ), nth, (中文(简体) ), set, (中文(简体) ), del, (中文(简体) ), push, (中文(简体) ), keys, (中文(简体) ), values(中文(简体) ) |
| 实例/nat.k | 小皮诺算术示例 |
| 实例/poly.k | 多态列表操作 int[]; 装入 lib/integer.k 第一个 |
| 实例/ieee-算术.k | 二进制64 算术返回 {result, flags}; 装入 core.k 财务报告和审定财务报表 lib/ieee.k 第一个 |
明确装入库 :load 在答复。 领导
# --lib <dependency> --use <specs> 源文件中的行是普通的
可读评论,记录预期的依赖性。 关于CLI,
--lib <dependency.klib> 将库定义用于内存
内容散列( a)@<hash>),同时 --use 明确带来请求友好
名称或化名纳入汇编范围。 见
文件格式和工具。 。 。 .
Java 脚本 API
import k from "@fraczak/k";
const fn = k.compile("{} |ok");
const result = fn(k.fromObject({}));
console.log(result.tag); // "ok"
编译函数返回 a Value 或者说 undefinedA级 Value 携带其
结构模式及其有效载荷.
发展
npm test
npm run test:backends
npm --prefix k-vscode test
见 测试/README.md 用于套房边界和可选工具.
语法变化要求 npm run prepare; 生成的解析器未编辑
手边.
这个 编译指南 绘制执行和执行图 层. 网络大会, (中文(简体) ), 萨尔瓦多,则 VS 代码扩展 有他们自己的使用指令.
k是实验性:语法、诊断、图书馆和文物格式 变化。 发布历史在 变动情况。 。 。 .
释放检查
GitHub CI 运行主机、后端和编辑套件,然后安装包装
归档与生产依赖并检查其API和节点上的命令
页:1 运行 npm run test:package -- /path/to/installed/@fraczak/k 重复
包检查. npm publish 发布前运行主套房.