#typenum #uuid #memquery

tylisp

用于表达复杂类型界限的领域特定语言

1 个不稳定版本

0.1.0 2021年5月22日

#672 in 编程语言


mem-query 中使用

MIT/Apache

78KB
2K SLoC

TyLisp:类型系统计算的领域特定语言

此包仍处于 实验性 阶段,可能会发生重大变化。它主要为了支持 memquery 的需求而开发。

tylisp 是一种嵌入在 Rust 宏和类型系统中的编程语言。它的主要目的是减轻编写极端通用 Rust 代码的负担,这些代码来自 trait 约束的激增。因为 tylisp 的计算完全在类型系统中进行,所以任何支持的操作都会自动接受任何对象。

tylisp 有两种不同的操作模式

  • Eval 模式将计算一个类型,但不提供产生该类型值的任何手段。它主要用于传达可以帮助选择几个实现之一的额外上下文信息。
  • Calc 还提供了一种机制,可以将相同的操作应用于运行时值,这将产生指定类型的值。这允许我们定义具有依赖于参数类型的返回类型的重载函数。

语义版本风险

以这种方式编写代码对版本控制提出了独特的挑战。所有通过 tylisp 定义的 Rust 函数都将其内部算法暴露在公共 API 中。因此,任何对函数内部工作的更改都有可能破坏下游代码。

最佳实践是指定传统的 trait 约束,以约束输入和输出类型,并手动验证 tylisp 代码始终满足这些约束。

依赖关系

~0.4–1MB
~20K SLoC