文件名称:metaocaml-letrec:MetaOCaml的灵活“ let rec”生成
文件大小:15KB
文件格式:ZIP
更新时间:2024-06-11 14:02:10
staging recursion metaocaml OCaml
metaocaml-letrec:灵活的“ let rec”生成 在诸如MetaOCaml之类的基于类型的MetaML的系统中,很难或不可能生成其大小事先未知的相互递归的绑定基团。 例如,假设(下面是由阐述的Neil Jones的示例)您要 let rec ack m n = if m = 0 then n + 1 else if n = 0 then ack (m -1 ) 1 else ack (m -1 ) (ack m (n -1 )) 第一个参数等于2 。 理想情况下,您可能希望生成以下代码,其中包含三个相互递归绑定以及所有专门的递归调用: let rec ack_2 n = if n = 0 then ack_1 1 else ack_1 (ack_2 (n -1 )) and ack_1 n = if n = 0 then ack_0 1
【文件预览】:
metaocaml-letrec-master
----.gitignore(26B)
----_tags(255B)
----opam(642B)
----README.md(3KB)
----lib_test()
--------residuals.ml(395B)
--------nested.ml(463B)
--------recursive_values.ml(323B)
--------tests.ml(854B)
--------ackermann.ml(372B)
--------even_odd.ml(376B)
--------polymorphic.ml(613B)
--------test_types.ml(441B)
----ppx()
--------ppx_letrec.ml(2KB)
----Changes(31B)
----LICENSE(1KB)
----myocamlbuild.ml(797B)
----META(370B)
----Makefile(1KB)
----lib()
--------letrec.mli(1KB)
--------attr_support_411.ml(637B)
--------attr_support_407.ml(984B)
--------genletrec.mli(326B)
--------letrec.ml(2KB)
--------genletrec.ml(4KB)