gpt4 book ai didi

haskell - "reify"和 "reification"在(函数式?)编程的上下文中意味着什么?

转载 作者:行者123 更新时间:2023-12-02 08:46:42 24 4
gpt4 key购买 nike

我在有关 haskell 和函数式编程的博客中读了很多这个术语(特别是 sigfpe's blog ),但我不知道它的含义。大多数时候我都不知道,但如果我知道的话,我可能会更好地理解这些文本。谷歌没有帮助我。我迷失在技术方面。

此外,世界的非技术意义(“将抽象具体化”)并不能帮助我理解在代码中具体化某些内容的实际含义。

我对计算机科学概念的理解有点慢,所以带有代码的实际示例会很好。 :P

最佳答案

所以我读了这篇文章,这几乎就是它的意思:采用抽象概念并将其具体化。或者,有一个代表抽象概念的代理。例如,在 Lisp 中,当您使用 lambda 时,过程抽象和应用的概念就会具体化。

具体化本身是一个广泛的概念,不仅仅适用于函数式编程语言。

例如,在 Java 中,有些类型在运行时可用。这些是可具体化的类型。这意味着,在运行时存在类型抽象概念的具体表示。相反,存在不可具体化的类型。这在 Java 中使用泛型时尤其明显。在 Java 中,泛型会发生类型删除,因此泛型类型信息在运行时不可用(除非参数化类型使用无界通配符)。

另一个例子是当您尝试对概念建模时。例如,假设您有一个 Group 类和一个 User 类。现在有一些抽象的概念来描述两者之间的关系。例如,User 的抽象概念是Group 的成员。为了使这种关系具体化,您可以编写一个名为 isMemberOf 的方法,用于说明 User 是否是 Group 的成员。因此,您在这里所做的就是将群组成员资格的抽象概念具体化(变得真实/明确/具体)。

另一个很好的例子是一个数据库,其中对象之间具有父子关系。您可以用树的抽象概念来描述这种关系。现在假设您有一个函数/方法从数据库中获取这些数据并构造一个实际 Tree 对象。您现在所做的是将父子树状关系的抽象概念具体化实际 Tree 对象。

回到一般的函数式语言,具体化的最好例子也许就是 Lisp 编程语言本身的创建。 Lisp 是一个完全抽象的理论结构(基本上只是计算机语言的数学符号)。这种情况一直持续到 Steve Russel 在 IBM 704 上实际实现 Lisp 的 eval 函数为止:

根据 Paul Graham 在 Hackers & Painters 中的报道,第 14 页。 185、麦卡锡说:“史蒂夫·拉塞尔说,看,我为什么不编写这个评估......,我对他说,嗬,嗬,你把理论与实践混淆了,这个评估是为了阅读,而不是为了阅读。”计算。但他继续做了。也就是说,他将我论文中的 eval 编译成 IBM 704 机器代码,修复了 bug ,然后将其宣传为 Lisp 解释器,这确实是。所以在那时 Lisp 有了基本上就是今天的形式……”

因此,Lisp 从一个抽象概念具体化,变成了一种实际的编程语言。

关于haskell - "reify"和 "reification"在(函数式?)编程的上下文中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5314884/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com