代码之家  ›  专栏  ›  技术社区  ›  Jeremy Powell

“香蕉、镜片、信封和带刺铁丝网”的实际应用?

  •  12
  • Jeremy Powell  · 技术社区  · 15 年前

    首先,高飞的标题直接引用了本文:

    http://eprints.eemcs.utwente.nl/7281/01/db-utwente-40501F46.pdf

    我理解它的理论价值,因为它模拟了大多数(如果不是全部的话)编程语义。

    想象一下,在编写的整个程序中,80%的逻辑都涉及到这些运算符。我想知道,如果一种语言强迫用户使用运算符,它是否可以利用它们的结构。。。

    2 回复  |  直到 15 年前
        1
  •  15
  •   Norman Ramsey    13 年前

    本文是一系列相关理论探索中的一篇。研究领域是函数式程序员所说的 泛型编程 (这与C++程序员称为泛型编程不同)。其思想是,您以这样一种方式编写函数: 当您定义一个新的数据类型时,您会自动获得新的代码 . 人们希望通过这种方式解决的一个经典问题是将数据的映像写入磁盘,然后从磁盘映像中读回同构数据。

    如果你想了解这些想法的实际应用,我推荐拉尔夫·辛兹的优秀论文 Generics for the Masses Haskell . 例如,我使用这些技术来实现捕获,避免在编译器中替换非常复杂的中间语言。

    拉尔夫写了许多关于泛型编程的好论文,杰里米·吉本斯也是。他们的东西远不及香蕉、镜片等等。。。

        2
  •  2
  •   Daniel C. Sobral    15 年前

    这意味着可以在一个范例中建模的解决方案也可以在另一个范例中建模,并且可以通过编程将一个范例转换为另一个范例。

    现在,某些问题在一种范式中比在另一种范式中更容易解决。而且,在一种范式中证明属性比在另一种范式中更容易。因此,如果你能表现出这种等价性,你就打开了以更容易的方式解决某些问题的大门,然后将解决方案转换为所需的范例。

    这类似于单子的东西。单子的大问题不在于你如何写单子。它们的重要之处在于,一旦你把你的问题简化为一个单子,就可以应用大量关于单子的定理。同样的原则在这里也适用。