问题标签 [purely-functional]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 将嵌套函数作为参数传递
有没有办法嵌套函数并将它们作为参数传递?我有这两个功能:
我想以两种不同的方式应用它们
2 个 stringHandlers 返回略有不同的字符串,但它们非常相似。有没有办法使用一个带有 2 个参数(stringID 和操作)的字符串处理程序
我想做类似的事情
stringHandlerINeed("516af2", mayus(removeA))
更新: 我将 jJ' 标记为答案,因为它不需要我更改我已经拥有的任何功能,这是我一直在寻找的概念,但是juvian 的这个答案是如此简单,让我希望我已经提出用它。
haskell - Haskell 选择性文本混淆
我想在不模糊某些关键字的情况下混淆文本文件报告,例如报告标题、列标题等。我使用 newLisp 构建了这样的程序。我正在尝试从头开始在 Haskell 中实现该功能。这是我到目前为止得到的代码,对于简单混淆的情况,它可以成功编译并运行。
除了作为例外传入的单词之外,我无法理解如何混淆所有文本。我的 newLisp 实现依赖于它的内置正则表达式处理。在 Haskell 中使用正则表达式时我运气不佳。可能是旧图书馆或其他东西。
我尝试将文本拆分为行和单词,并创建J
所谓的音品。这种方法很快变得笨拙。我尝试使用解析器,但我认为这也会变得很麻烦。
有没有人对一种简单、直接的方法来识别文本中的异常词以及如何不将它们发送到混淆功能提出建议?Haskell 是如此出色的语言,我肯定在我眼皮底下漏掉了一些东西。
我试过谷歌,但似乎我希望提供一个不混淆的单词例外列表是新颖的。否则,混淆非常简单。
更新
按照我标记为答案的想法,我创建了自己的words
函数:
使用break
无效。我认为使用 break 和 span 的相互递归会起作用,但在我想尝试之前,我使用了上面的代码。
然后我实现了complexObfuscation如下:
这完成了我所追求的。不幸的是,我没有预料到同一个生成器会在每次调用混淆时生成相同的字符。所以每个单词都以相同的字符开头。哈哈。另一天的问题。
list - Haskell:将 100 个数字的列表更改为 10 个 10 个数字的列表?
在 Haskell 中,如何将 x 个数字的列表更改为 n 个 n 个数字的列表?
第一个子列表将有第一到第十个数字,第二个列表从第 11 到第 20...
myFunction :: [Int] -> [[Int]]
scala - Scala Double epsilon 函数式计算
使用 Java计算机器 epsilon的建议方法如下,
如何scala.Double
从这个建议的代码中计算以惯用/功能风格使用 Scala 的 epsilon?
javascript - 如何以纯功能风格定量配给
我需要根据他们的分数将一定数量的人分配给他们。规则是,他们的要求根据他们的立场得到满足,剩下的就是什么。在使用 Lo-Dash ( JSBin )的 JavaScript 中:
结果:
由于解决方案取决于顺序,是否可以更改此代码以使其成为纯功能?
generics - Haskell:如何做一个通用的随机函数?
我正在尝试制作一个返回随机值的通用函数。我可以让一个为浮点数工作,然后另一个为整数工作......像这样:
但我希望有一个适用于任何相关的变量类型。我该怎么做?到目前为止,我有这个,但这不起作用:
ajax - 应对 Bacon.js 的副作用
我是 Bacon.js 的新手,通常用 Haskell 编写程序。根据我使用 Haskell 的经验,我想将 Bacon.js 中的一些情况描述为纯函数式的方法。
这是一个示例情况。
triggerStream
是源流。resultStream
triggerStream
当's 事件发生时尝试 ajax 访问。resultStream2
完成 ajax 访问后也会尝试 ajaxresultStream
访问。
这是我的方法:
(a) 支持在每个触发事件之后执行,换句话说,它在resultStream
ajax 访问之前执行。
resultStream
(b) 支持在ajax 访问后触发。
(c) 支持在resultStream2
ajax 访问之后启动。
我知道 Bacon.js 的流或属性对自己有副作用,所以我的代码不能正常工作。在 (b) 中,resultStream
的事件从resultStream
对象中删除,这导致 (*) 中的流为空。
更改resultStream
为函数(如)接缝的方法效果很好,但在 (b) 和 (c) 时triggerStream
会导致独立的两次ajax 访问。resultStream
有什么想法可以实现我的方法吗?
php - PHP 纯函数
我正在尝试识别PHP 代码中的纯函数。
纯函数是关于函数的以下两个陈述都成立的函数:
- 给定相同的参数值,该函数始终评估相同的结果值。函数结果值不能依赖于任何可能随着程序执行或程序的不同执行而改变的隐藏信息或状态,也不能依赖于来自 I/O 设备的任何外部输入。
- 结果的评估不会导致任何语义上可观察的副作用或输出,例如可变对象的突变或输出到 I/O 设备。
(来自维基百科的定义)
是否足以说一个 PHP 函数是纯的当且仅当
- 它的所有参数都按值传递(
&
参数列表中没有) - 它不使用对象成员(
$this
在函数体中没有) - 它不使用全局变量(它不包含
global
在函数体中) - 它不使用超全局变量(它不包含
$_
变量)
这些陈述是真的吗?我错过了任何用例吗?
c - C 函数式编程的意外结果
在 C 编程中尝试函数式风格时,我尝试将以下 Haskell 代码转换为 C。
至
我期望完全相同的行为,但 C 程序总是输出 0.0。它们都输出 0.5 ,f(0, 0, 1, 1)
但是每当数字变大时,C 版本就根本不起作用。出了什么问题?
purely-functional - Modulo function in Clean
Is there a predefined way to compute the modulo of two integers in Clean?
StdOverloaded defines the (mod) typeclass, but StdInt does not contain an instance of it, and StdEnv does not either anywhere else. I have seen a language overview about Clean version 2.0, which mentions StdInt's mod instance, but in 2.4, it is definitely missing.