Catala 是一种特定于领域的语言,用于从立法文本中推导出忠实的构造算法。要快速了解该语言及其功能,您可以直接跳至官方 Catala 教程。您可以加入 Zulip 上的 Catala 社区!
Catala 是一种适用于社会财政立法文学编程的编程语言。通过用法典的含义来注释立法文本的每一行,人们可以推导出复杂的社会财政机制的实施,该机制在法典的忠实性方面享有高度的保证。
具体来说,你必须首先收集所有包含你想要实施的社会财政机制信息的法律、行政命令、以往的案例等。然后,您可以在您最喜欢的文本编辑器中逐篇注释文本:
一旦您的代码完成并经过测试,您就可以使用 Catala 编译器生成律师可读的 PDF 版本的实现。 Catala 语言是与法律专业人士合作专门设计的,以确保代码可以由领域专家(在本例中是律师而不是程序员)审查并证明其正确性。
卡塔拉语言的特殊之处在于它的逻辑结构模仿了法律的逻辑结构。事实上,萨拉·劳斯基教授在她的文章《法规的逻辑》中正式阐述了建立在默认逻辑基础上的“条件下的定义”的核心概念。据我们所知,Catala 语言是唯一将默认逻辑嵌入为一流功能的编程语言,这就是为什么它是唯一完全适合文字立法编程的语言。
要开始,最好的地方是该语言的教程。还提供法语版本,但可能与最新的语言功能不同步。
注:前沿版本
如果您对最新的开发版本感兴趣,可以在 https://catalalang.github.io/catala 找到包括二进制文件和 API 文档在内的预构建工件
Catala 可作为 opam 包使用!如果您的机器上安装了 opam,只需执行:
opam install catala
要获得最先进的最新版本的 Catala,您还可以执行以下操作
opam pin add catala --dev-repo
但是,如果您希望获得编译器的最新进展,您可能希望从该存储库的源代码中编译它或使用 nix。为此,请参阅专用自述文件。
注意:可以将--locked
标志添加到上述命令中,以更接近地模仿已知的工作开发设置。相反,在主 opam 文件修改后,应调用opam lock
来重新生成catala.opam.locked
文件。
如果您已安装catala --help
,请使用它来获取有关可用命令行选项的更多信息。该手册页也可在线获取。要获取开发版本的帮助,请在make build
之后运行make help_catala
。 catala
二进制文件对应于 Catala 编译器。
顶层Makefile
包含许多要运行的有用目标。要显示它们,请使用
make help
虽然编译器有一些内置的 Catala 后端(Python、Ocaml 等),但也可以向 Catala 编译器添加自定义后端,而无需修改其源代码。该插件解决方案依赖于动态链接:请参阅专用的自述文件。
如果您已安装clerk --help
,请使用它来获取有关可用命令行选项的更多信息。要获取开发版本的帮助,请在make build
之后运行make help_clerk
。 clerk
二进制文件对应于 Catala 构建系统,负责测试等工作。
要获取有关 Clerk 的更多信息,请参阅专用自述文件
Catleg 是一个命令行实用程序,可与法国法律文档的官方存储库 LégiFrance 进行有用的集成。有关更多信息,请参阅指定的存储库。
语法突出显示可用于多种文本编辑器。脚本可以在这里找到。
Catala 的 VSCode 扩展已在市场上提供。它捆绑了一个语法荧光笔和一个专用的 LSP 服务器,该服务器提供对代码导航、自动完成以及测试套件的 UX 的支持。有关更多详细信息,请参阅专用存储库。
代码格式化工具catala-format
可与 LSP 服务器一起使用。如果安装,代码格式化可直接在 VSCode 中使用。该工具基于 Catala 的tree-sitter
语法。有关更多详细信息,请参阅专用存储库。
可以在备忘单(法语和英语版本的语法)中找到 Catala 语法的完整且方便的参考。
要审核 Catala 编译器部分认证的正式证明,请参阅专用自述文件。
该文档可在线访问,包括最新版本和前沿版本。
它是使用dune
和odoc
从编译器源代码生成的。跑步
make doc
生成文档,然后在任何浏览器中打开doc/odoc.html
文件。
要探索用 Catala 编写的不同程序,请参阅专门的自述文件。
要了解如何使用 Catala 编译器以您最喜欢的编程语言生成的代码,请参阅法国法律库的自述文件。还提供了相应的预构建示例。
要了解如何为该项目做出贡献,请参阅专用自述文件。
要了解如何运行或改进 Catala 参考测试套件,请参阅专用自述文件。
编译器和此存储库中包含的所有代码均根据 Apache 许可证(版本 2)发布,除非为子目录明确了另一个许可证。
Catala 是法国国家计算机科学研究所 Inria 的一个研究项目。该编译器还不稳定并且缺乏一些功能。
该语言以法学教授皮埃尔·卡塔拉 (Pierre Catala) 的名字命名,他通过创建法律案例计算机数据库 Juris-Data 开创了法国法律科技。他在 20 世纪 60 年代末领导的研究小组,即法律信息研究与发展中心 (CETIJ),也影响了国家顾问 Lucien Mehl 创立的法律信息研究与发展中心 (CENIJ) ),最终转变为管理 LegiFrance 网站的实体,充当立法文件的公共服务机构。