首页 文章
  • 22 votes
     answers
     views

    D中的纯函数式编程

    在我看来,功能纯度的强大之处在于深度代码路径可以被验证为无副作用 . 人们在代码树规模上的经验是什么,可以在纯粹的说明符中,以及代码重用的级别是什么? 我发现的一些事情: std.algorithm 大部分没有被标记为 pure ,但可能很大程度上是纯粹的,要么是纯粹的算法需要实例化函数或mixin的纯度,要么纯度说明符本身是静态多态的 .有用的转换器如 to!string( someInt ) ...
  • 2 votes
     answers
     views

    在Scala中构建具有副作用期货的无状态期货

    虽然组合期货有一个收益结构,一些有副作用,有些没有,我引入了一个竞争条件,因为未来取决于副作用并没有把这个方面的结果影响未来作为一个论点 . 简而言之: 未来b读取由未来a的副作用改变的值,但未来a未明确依赖于未来b的结果,因此可能在b完成读取之前发生 . 为了解决这个问题,我的同事介绍了一个虚拟函数,将 b 的结果作为参数,然后将其丢弃 . 这样做是为了使依赖显式化 . 实际代码在这里: v...
  • 1 votes
     answers
     views

    MSdos和DevC编译器中的前增量和后增量结果差异[重复]

    这个问题在这里已有答案: Is the output of printf (“%d %d”, c++, c); also undefined? 6个答案 在printf中预先递增和后递增变量时,我无法理解下面的问题: - turbocpp编译器中使用的代码: - #include<stdio.h> main() { int i=0; clrscr(); printf("%...
  • 0 votes
     answers
     views

    消除副作用如何促进并行和并发编程?

    是否有任何成功和实用的函数式语言(如Erlang)或库基于这样的假设,即用这种语言编写的程序没有副作用或只有受控制的副作用(例如,由Monad表示,因此可以检测到并由编译器分隔)
  • 2 votes
     answers
     views

    功能编程:副作用实际发生在哪里?

    在开始学习Haskell之后,即使在阅读了大量文档之后,仍然有一些我在Haskell中无法理解的东西 . 我知道要执行IO操作,你必须使用一个“IO monad”,它将一个值包装在一种“黑盒子”中,这样任何使用IO monad的函数仍然是纯粹的功能 . 好的,很好,但那么IO操作实际发生在哪里? 这是否意味着Monad本身并不是纯粹的功能?或者是在C中实现IO操作,在Haskell编译器中“嵌入”...
  • 51 votes
     answers
     views

    纯度与参考透明度

    这些术语似乎有不同的定义,但我总是想到一个暗示另一个;当表达式是引用透明而不是纯粹或 vice-versa 时,我无法想到任何情况。 维基百科为这些概念维护单独的文章并说: 来自参考透明度: 如果表达式中涉及的所有函数都是纯函数,则表达式是引用透明的。此外,如果丢弃它们的值并且它们的副作用无关紧要,则表达式中可以包含一些不纯的函数。 来自纯粹的表达: 构造纯表达式需要纯函数。 [5]纯表达通...
  • 39 votes
     answers
     views

    为什么提出异常会产生副作用?

    根据维基百科的副作用条目,提出异常构成了副作用。考虑一下这个简单的 python 函数: def foo(arg): if not arg: raise ValueError('arg cannot be None') else: return 10 使用foo(None)调用它将始终遇到异常。相同的输入,相同的输出。它是参考透明的。为什么这不是一...
  • 3 votes
     answers
     views

    OCaml中的参考透明度

    我试图调整引用透明度的定义与OCaml如何处理多态类型和副作用 . 我在http://www.csc.villanova.edu/~dmatusze/resources/ocaml/ocaml.html上读到了 如果定义的含义不依赖于它所处的上下文,则称定义具有引用透明性.OCaml中的函数具有引用透明性,即更改上下文(其他变量和其他函数)不会改变任何函数的含义你已经定义了 . 在调试程序时,这...
  • 2 votes
     answers
     views

    除了赋值之外的命令式语句的类型推断[关闭]

    在我搜索关于命令式语言的类型系统的研究论文时,我只找到了具有可变引用的语言的解决方案,但是没有真正的命令式控制结构,例如复合运算符,循环或条件 . 因此,不清楚如何实现具有部分类型推断的命令式语言,例如http://rust-lang.org . 论文没有提到参数化类型,例如 List of a ,因为参数化类型是Hindley-Milner类型系统的一个简单扩展 - 只有统一算法应该被扩展,其余...

热门问题