首先,愚蠢的标题直接引用了本文:
http://eprints.eemcs.utwente.nl/7281/01/db-utwente-40501F46.pdf
我理解它的理论价值,因为它模拟了大多数(如果不是全部)编程语义。
基于此的编程范例可以最有效,最实际地解决哪些问题?什么问题不是?
想象一下整个程序的编写,其中80%的逻辑涉及这些运算符。我想知道强迫用户操作的语言是否可以利用他们的结构......
答案 0 :(得分:15)
本文是一系列相关的理论探索之一。研究领域是函数式程序员所称的泛型编程(这与C ++程序员所谓的泛型编程不同)。我们的想法是,您以这样的方式编写函数:当您定义新数据类型时,您会自动获得新代码。人们想用这种方式解决的一个经典问题是将数据的图像写入磁盘,然后从磁盘映像中读回同构数据。
如果你想了解这些想法的实际应用,我推荐Ralf Hinze的优秀论文Generics for the Masses,它展示了如何在普通的Haskell中尝试所有这些古怪的想法。例如,我已经使用这些技术在编译器中实现非常复杂的中间语言的捕获避免替换。
拉尔夫已经撰写了许多关于通用编程的优秀论文,Jeremy Gibbons也是如此。他们的东西并不像香蕉,镜片等那么远......
答案 1 :(得分:2)
这意味着可以在一个范例中建模的解决方案也可以在另一个范例中建模,并且可以通过编程方式将其转换为另一个范围。
现在,某些问题在一个范例中比在另一个范例中更容易解决。此外,在一个范例中证明属性比在另一个范例中更容易。因此,如果您能够表现出这样的等价性,那么您就可以更轻松地解决某些问题,然后将解决方案转换为所需的范例。
这类似于monad thingy。 monad的重要性不是你怎么写的。与他们最重要的是,有很多关于monad的定理可以在你将问题减少到monad后应用。同样的原则适用于此。