问题标签 [declarative-programming]

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 投票
1 回答
61 浏览

alloy - 在 Alloy 中执行状态时引用了错误的 sig 对象

我是合金新手。我正在尝试使用合金来形式化一个系统。在这里,我想根据事件执行某些操作。为此,我有一个要使用枚举事件跟踪的事件列表。我正在使用合金的订购功能浏览所有状态。在每种状态下,我都采用混合对象并运行操作。

我目前面临的问题是 - 在我的系统中,我有两个 sig 对象 - ClassA 和 ClassB。执行合金代码后,我正在生成流程图。不幸的是,我注意到我的 ClassB 被引用到了 Mixture 对象的 ClassA。我附上图表

在此处输入图像描述

我还在这里附上了我的完整代码。谁能帮我调试一下问题,好吗?我试图强加不同的谓词和逻辑,但它们都不起作用。

0 投票
2 回答
133 浏览

javascript - 如何让合金在数据集上运行以检查所有规则

我已经建立了一个合金程序来检查系统的一些规则。现在我想检查真实系统中的规则。为此,我拥有来自真实系统的所有数据。例如,

我的合金工具检查了两个用户之间寻找共同朋友的规则。我可以通过在合金中给出一些简单的规则来做到这一点。现在,我想在一个大数据集中对其进行测试。假设,我有 facebook 朋友数据集。现在,我如何将我的 facebook 数据集提供给使用 Alloy 查找 Facebook 用户的共同朋友的合金。

是否可以编写一个 javascript/python/java 的包装器来在我的合金分析器和 json 数据之间建立链接?

0 投票
1 回答
61 浏览

alloy - 更改合金系统内对象的服务代码

每当有任何服务对其进行操作时,我都想更改对象的服务代码。假设我有一个操作适用于一个对象,该对象的服务代码将为 1,当另一个操作执行时,服务代码将再次为 2。我想将最新的服务代码保存到每个对象。不幸的是,我不能很好地设计我的谓词,这就是为什么从合金中得到谓词不一致的消息。

我尝试了一些代码来为每个对象分配服务代码。如下所示的完整代码 -

当我只有一个操作链接到一个对象时,上面的代码可以正常工作。我在这里附上了它的图表。每当有多个操作时,合金就无法找到一个实例。需要帮助设计合金代码以实现我的目标。

另一种可能的方法可能是——我们可能有一个服务代码列表,而不是一个服务代码。考虑时间戳以及每个服务代码。然后什么时候需要找出最新的服务代码。我们可以取最大时间戳的服务代码。但我不确定如何用合金设计这个。

0 投票
7 回答
4130 浏览

java - Java 函数式编程:如何将 for 循环中的 if-else 阶梯转换为函数式?

期望是从输入列表中派生 3 个列表itemIsBoth, 。如何将下面的代码转换为功能样式?(我知道这段代码在命令式风格中足够清晰,但我想知道声明式风格真的无法处理这样一个简单的例子)。谢谢。aItemsbItemsitems

0 投票
4 回答
135 浏览

javascript - for 循环的 javascript 功能/声明性版本(使用此示例)?

有这个代码

如何将其转换为更具声明性的版本?

代码是这样的,因为拆分采用了一个只解析一次文本的正则表达式,然后使用这些片段,我正在构建尽可能多的组件与myMagic函数

那么有没有办法在不改变逻辑的情况下以更具声明性的方式编写它?

0 投票
5 回答
24356 浏览

ios - 什么是 PassthroughSubject 和 CurrentValueSubject

我碰巧研究了 Apple 新的 Combine 框架,在那里我看到了两件事

PassthroughSubject<String, Failure>

CurrentValueSubject<String, Failure>

有人可以向我解释它们的含义和用途吗?

0 投票
2 回答
41 浏览

alloy - 使用 Double In 语句在合金中键入错误

我正在尝试编写一个谓词,使所有香蕉和新鲜苹果都变得昂贵。我能够达到其中一个条件,但不能同时满足这两个条件。我对使用 Alloy 非常陌生,非常感谢任何帮助。

下面是我的代码,发生错误是因为我使用了双 In 语句,但我不确定如何在不必使用两个 in 语句的情况下编写它。我收到的错误是“类型错误,这必须是一个集合或关系”

0 投票
1 回答
138 浏览

python - Python 声明式循环重构(需要访问多个元素)

嗨,我有这段代码,并试图将其重构为声明性的。但是AFAIK,所有像这样的声明性方法map() reduce() filter()都会循环遍历容器的每个元素,而不是像这样

那么如何编写这段代码,声明式的方式呢?

0 投票
2 回答
88 浏览

java - 使用声明式样式查找一个 Set 中的字符串是否是另一个 Set 中的字符串的子字符串?

我有两个Sets字符串,我需要查找一个字符串是否是另一个集合中任何字符串的子字符串。下面是命令式的等效代码。

我想出了不是很雄辩的声明性代码。

有没有办法流畅地编写相同的代码?

0 投票
2 回答
63 浏览

java - 使用流填充倍数列表

有没有办法使用 stream() 以 Java 8 声明式风格编写此方法?