问题标签 [combinators]

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.

0 投票
3 回答
235 浏览

haskell - 如何在 Haskell 中使用 (.)

我试图在 Haskell 中写这样的东西:

但它不起作用。

根据类型,我的理解是intersect返回一个类型[a]并捐赠给nub,它正好是一个类型[a],然后也返回一个类型[a]length然后最后返回应该是一个Int。它出什么问题了?

0 投票
1 回答
2307 浏览

f# - (Kestrel) K-combinator:为什么有用?

我最近一直在学习 F#(我的背景是 C#)并且正在阅读网站http://fsharpforfunandprofit.com,我发现它非常有帮助。

我必须访问http://fsharpforfunandprofit.com/posts/defining-functions/这是关于组合器的部分。除了红隼之外,我都了解它们(尽管 Y 组合器或 Sage 鸟在我的脑海中拧紧!)。Scott Wlaschin 给出的定义(在 F# 中)为:

我一生都无法理解这将是有用的任何情况。起初我认为它可以用作链运算符,以便您可以将值传递给函数,然后返回原始值。我以前自己也写过这样的运算符,但你可以看到它不一样:

如果我们部分应用 K 组合子(值为 5),那么我们会返回一个忽略其参数并返回 5 的函数。同样,没有用。

谁能给我一个简单的例子来说明这可能在哪里使用?

0 投票
2 回答
440 浏览

parsing - 定点组合器如何使递归结构终止?

定点组合器为匿名函数提供了一种引用自身或构建相互递归结构的方法。尽管在 lambda 演算中很有用,但它们在现代编程语言中基本上是多余的,因为大多数(如果不是全部)都支持递归、lambda 和闭包。

此外,定点组合器可以使递归结构(如左递归语法分析器)终止。考虑Lickman 1995,他证明了他的实现的终止,但从未真正提及它是如何工作的(这只是从格理论到 haskell 实现的逐步推导)以及为什么他需要已经支持递归的语言中的定点组合器本地人。

它是如何工作的,为什么他需要一个定点组合器?

0 投票
2 回答
472 浏览

c++ - c++中较大值的数学计算

这是一个非常简单的程序,有 t 个测试用例,我们必须找到 nCr=n!/r!*(nr)!。所以它适用于较小的值,如 20C2,但不适用于较大的值,如 100C10。它给出 32C2=-6 ,100C10 浮点异常。如何使它为 1<=n<=r<=1000 ?? 注意:我不是要求 long double 或不想将其更改为 float。答案应该类似于 100C10 = 17310309456440 类似 989C45=?

0 投票
3 回答
190 浏览

c - 将两个字符串组合成一个字符串,从而消除 C 中的相同字母

你好,我在编程方面很新,想向你学习一些:) 我正在用 .c 编写一个程序,但我陷入了困境。我想获得 3 个或更多输入,最大大小为 5 个字符。(例如:HELLO、HI、GOOD、BYE)我想将它们堆叠在一个新字符串中,该字符串仅包含这 4 个字符串中的一次相同的字母(例如:H、E、L、L、O、I、G、D ,经过)

我希望你能让我知道我可以用哪种方式做到这一点。(我也是该网站的新手。我搜索了这个但我找不到。对不起,如果它存在。)

0 投票
1 回答
40 浏览

regex - “updateDet”不应识别为关键字“update”

使用此代码

我得到错误

[1.1] 失败:找到匹配正则表达式\z' expected butu' 的字符串

更新,更新

如何解决?updateDet 不应识别为关键字

斯卡拉 2.10.2

0 投票
1 回答
63 浏览

ruby - 递归函数的点击行为

我喜欢偶尔使用 tap 作为方法返回的美化器。但是,当使用带有递归函数的 tap 时,它的行为与我的预期不同:

退货

如果我将渲染功能更改为使用点击:

它返回

我会假设行为与第一个渲染函数相同。文档表明它“向块产生 x,然后返回 x”......因为函数正在递归,它是否以某种方式污染了函数堆栈?

0 投票
1 回答
314 浏览

json - 如何使用 scala 组合器读取案例类中的可选 json 值

我正在尝试处理可以选择具有“信息”及其包含的 JSON。在以下案例类和组合子中捕获以读取对象中的 JSON。但是代码无法编译。有没有更好的方法来处理这个?信息可以为空。

编译错误:

斯卡拉版本:2.11.2

谢谢,

0 投票
1 回答
242 浏览

json - ScalaJsonCombinator 中的这个“和”是什么(定义写入时)?

我一直在将这个 json 组合器用于几个基本/标准案例,但并没有真正理解它是如何工作的。一切都很好。

现在我想让自己为可能出现的任何高级案例做好准备;我需要理解代码。

参考:https ://www.playframework.com/documentation/2.3.x/ScalaJsonCombinators

我想我可以理解阅读:

它创建一个读取:

  1. 首先——当给定一个 JsValue(通过它的“reads”方法)——它拉取“lat”,然后是“long”。在这两者中,它创建了一个元组(Double,Double)。-- https://www.playframework.com/documentation/2.3.x/api/scala/index.html#play.api.libs.json.Reads

  2. 然后将该元组分配给该 Reads... 的部分函数,​​在这种情况下,它是“Location.apply _”返回的任何内容。我在repl中试过了:

...

该部分函数将 (Double, Double) 的元组作为输入。所以...,第 1 步的结果被引导到第 2 步,我们得到一个 Location 实例作为“读取”的返回。

现在写:

首先是“取消申请”。我在repl中试过:

哎呀,好的,我按照说明进行操作:

好的,所以我们得到了一个偏函数,它将 Location 的实例转换为 (Double, Double) 的(可选)元组。

接下来,“解除”:

好的,所以... unlift 只是丢弃了“选项”,并将我们直接带到元组。

好的......所以......我猜......这个Writes的“写入”...... *)当给定一个Location实例时,它将:

  1. 通过 unlift(Location.unapply) 生成的部分函数传递该对象。

  2. 该部分函数返回的元组 (Double, Double) 然后被引导到由此产生的任何内容:

    (JsPath\"lat").write[Double] 和 (JsPath\"long").write[Double]

那“随便”到底是什么?按照 JsPath 的 API 文档,我认为是 OWrites:https ://www.playframework.com/documentation/2.3.x/api/scala/index.html#play.api.libs.json.OWrites

但是......我看不到OWrites中有一个名为“and”的方法。这个“和”在哪里声明?它有什么作用?是:“oWrites1 和 oWrites2”产生“oWrites3”吗?而这个“oWrites3”是一种特殊类型的 OWrites,它以元组作为输入?...如果是这种情况...元组没有关于案例类中属性名称的信息(“lat”和“long”)。那么它怎么知道生成的 json 字符串应该是 {"lat": 1, "long": 2} 呢?

对不起,一连串的问题。请帮助我清楚地了解这一点。谢谢!

*) https://www.playframework.com/documentation/2.3.x/api/scala/index.html#play.api.libs.json.Writes


更新:

0 投票
1 回答
554 浏览

json - 为包含类型为 Map 的属性的案例类定义写入。Json / Scala / PlayFramework

我有一个这样定义的案例类:

当我尝试以这种方式声明其 Writes 时,出现错误:

所以我求助于这个......,仍然有一个错误:

有人可以帮我指出我做错了什么吗?

我觉得我对这个读/写组合器的理解有点不稳定。我在这里发布了相关问题(当我试图了解发生了什么时):ScalaJsonCombinator 中的这个“和”是什么(定义写入时)?

如果您知道为“Duh”实现写入和读取的最佳方式,请分享。

提前致谢!