-
5 votesanswersviews
GCC优化纯函数
我对GCC关于优化 pure 函数(来自online docs)的保证感到困惑: 纯净除返回值外,许多函数都没有效果,它们的返回值仅取决于参数和/或全局变量 . (...)有趣的非纯函数是具有无限循环的函数或者取决于易失性存储器或其他系统资源的函数,它们可以在两个连续调用(例如多线程环境中的feof)之间改变 . 对于 const : const许多函数不检查除参数之外的任何值,除了返回值... -
4 votesanswersviews
`(整数a)=> a - > Bool`和`整数 - > Bool`之间的区别?
我今天在Haskell写了我的第一个程序 . It compiles and runs successfully . 而且由于它不是典型的"Hello World"程序,它实际上远不止于此,所以请恭喜我:D 无论如何,我对我的代码和Haskell中的语法几乎没有疑问 . Problem: 我的程序从标准输入读取整数 N ,然后,对于 [1,N] 范围内的每个整数 i ,它打印... -
51 votesanswersviews
纯度与参考透明度
这些术语似乎有不同的定义,但我总是想到一个暗示另一个;当表达式是引用透明而不是纯粹或 vice-versa 时,我无法想到任何情况。 维基百科为这些概念维护单独的文章并说: 来自参考透明度: 如果表达式中涉及的所有函数都是纯函数,则表达式是引用透明的。此外,如果丢弃它们的值并且它们的副作用无关紧要,则表达式中可以包含一些不纯的函数。 来自纯粹的表达: 构造纯表达式需要纯函数。 [5]纯表达通... -
33 votesanswersviews
为什么捕获异常非纯,但抛出异常是纯粹的?
在Haskell中,您可以从纯函数代码中抛出异常,但是您只能捕获IO代码 . 为什么? 你可以在其他情况下或仅在IO monad中捕获吗? 其他纯功能语言如何处理它? -
53 votesanswersviews
纯功能数据结构有什么好处?
有关数据结构的大量文本和数据结构代码库 . 我知道纯粹的功能数据结构更容易推理 . 但是,我很难理解在实用代码中使用纯函数数据结构(使用函数式编程语言与否)在命令式对应方面的真实优势 . 有人可以提供一些真实世界的案例,其中纯功能数据结构具有优势,为什么? 这一行的例子就像我在 programming_language 中使用 data_structure_name 做 application 因... -
0 votesanswersviews
如何在使用纯功能深度优先搜索时防止循环
我有一个图表,实现为连接任意节点的边列表,下面定义了数据类型 . type edge = int * int;; type graph = edge list;; 如何在避免陷入循环的同时执行纯功能深度优先搜索?我不太清楚如何跟踪所有访问过的节点,同时保持纯粹的功能 . 答案可能是微不足道的,我不是出于某种原因在概念上 grab 了 .