![]() |
1
15
本文是一系列相关理论探索中的一篇。研究领域是函数式程序员所说的 泛型编程 (这与C++程序员称为泛型编程不同)。其思想是,您以这样一种方式编写函数: 当您定义一个新的数据类型时,您会自动获得新的代码 . 人们希望通过这种方式解决的一个经典问题是将数据的映像写入磁盘,然后从磁盘映像中读回同构数据。 如果你想了解这些想法的实际应用,我推荐拉尔夫·辛兹的优秀论文 Generics for the Masses Haskell . 例如,我使用这些技术来实现捕获,避免在编译器中替换非常复杂的中间语言。 拉尔夫写了许多关于泛型编程的好论文,杰里米·吉本斯也是。他们的东西远不及香蕉、镜片等等。。。 |
![]() |
2
2
这意味着可以在一个范例中建模的解决方案也可以在另一个范例中建模,并且可以通过编程将一个范例转换为另一个范例。 现在,某些问题在一种范式中比在另一种范式中更容易解决。而且,在一种范式中证明属性比在另一种范式中更容易。因此,如果你能表现出这种等价性,你就打开了以更容易的方式解决某些问题的大门,然后将解决方案转换为所需的范例。 这类似于单子的东西。单子的大问题不在于你如何写单子。它们的重要之处在于,一旦你把你的问题简化为一个单子,就可以应用大量关于单子的定理。同样的原则在这里也适用。 |
![]() |
nanounanue · 使用python和高级操作符的函数管道 7 年前 |
![]() |
Zazaeil · 这个特定的递归可以用尾部优化的方式重写吗? 7 年前 |
![]() |
corvid · 使用ramda通过变量进行升序/降序 7 年前 |
![]() |
CodingNow · Scala:如何制作多种方法并逐一应用? 7 年前 |