1 个不稳定版本
0.1.0 | 2021年5月22日 |
---|
#672 in 编程语言
在 mem-query 中使用
78KB
2K SLoC
TyLisp:类型系统计算的领域特定语言
此包仍处于 实验性 阶段,可能会发生重大变化。它主要为了支持
memquery
的需求而开发。
tylisp
是一种嵌入在 Rust 宏和类型系统中的编程语言。它的主要目的是减轻编写极端通用 Rust 代码的负担,这些代码来自 trait 约束的激增。因为 tylisp
的计算完全在类型系统中进行,所以任何支持的操作都会自动接受任何对象。
tylisp
有两种不同的操作模式
Eval
模式将计算一个类型,但不提供产生该类型值的任何手段。它主要用于传达可以帮助选择几个实现之一的额外上下文信息。Calc
还提供了一种机制,可以将相同的操作应用于运行时值,这将产生指定类型的值。这允许我们定义具有依赖于参数类型的返回类型的重载函数。
语义版本风险
以这种方式编写代码对版本控制提出了独特的挑战。所有通过 tylisp
定义的 Rust 函数都将其内部算法暴露在公共 API 中。因此,任何对函数内部工作的更改都有可能破坏下游代码。
最佳实践是指定传统的 trait 约束,以约束输入和输出类型,并手动验证 tylisp
代码始终满足这些约束。
依赖关系
~0.4–1MB
~20K SLoC