Functional programming 在OCaml的上下文中,什么是收回?

Functional programming 在OCaml的上下文中,什么是收回?,functional-programming,ocaml,Functional Programming,Ocaml,我在笔记本上的一个小地方草草写下了“在OCaml中收回”一词,现在我似乎记不起它是关于什么的,也在互联网上找不到任何关于它的内容 这个术语真的存在吗?还是我的讲师自己对OCaml的某些属性的表示法。我的同学似乎也不记得是怎么回事,所以我只想确认我是否在做梦。另一种可能的解释是:在数学中,缩回是态射的左逆(见下图)。特别是,解析器可以被看作是给定的漂亮打印机的缩回:从抽象语法树(AST)开始,漂亮地打印它,然后解析生成的源代码应该生成原始AST(而相反的情况不一定正确)。它与OCaml本身没有多大

我在笔记本上的一个小地方草草写下了“在OCaml中收回”一词,现在我似乎记不起它是关于什么的,也在互联网上找不到任何关于它的内容


这个术语真的存在吗?还是我的讲师自己对OCaml的某些属性的表示法。我的同学似乎也不记得是怎么回事,所以我只想确认我是否在做梦。

另一种可能的解释是:在数学中,缩回是态射的左逆(见下图)。特别是,解析器可以被看作是给定的漂亮打印机的缩回:从抽象语法树(AST)开始,漂亮地打印它,然后解析生成的源代码应该生成原始AST(而相反的情况不一定正确)。它与OCaml本身没有多大关系,但它与函数式编程中非常常见的代数视图(编译)相关联。

好吧,类型理论中似乎有一种称为“retract”的东西,它似乎是指定义值的等价类以获得更粗粒度的类型。如果你的课是理论课,也许就是这样?我个人从未听说过OCaml上下文中使用的术语。你知道,我不是类型理论家。我们在研究词汇分析和语法分析,是的,我们在讨论标记的等价类。你可以在群论中用谷歌搜索一个叫做“retract”的东西,听起来像是一个等价类构造(等价类的集合是一个子组)。有人会用它来描述代币的类别吗?这似乎是一个延伸。我说的太多了,我已经深不可测了:-)从未听说过ocaml解析中的这个词。如果我是你,我会问讲师。(另一方面,如果你是我,你可能会写错字,或者写得太差,什么都说不出来。)