问题标签 [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 回答
162 浏览

prolog - 没有为 maplist(all_distinct, list) 充分实例化

maplist/2我无法运行此代码,关于允许运行的列表我到底要说什么all_distinct/1

我明白了ERROR: Arguments are not sufficiently instantiated。我知道我对数字列表说得不够多,但我不知道我需要说什么。我想要一个 9 个不同数字 1 到 9 的列表。

这是我尝试执行时的跟踪:

看起来ins/2可能无法正常工作,然后仍然传递给maplist/2? 我不知道发生了什么。

0 投票
7 回答
435 浏览

java - 将命令式 Java 转换为函数式 Java(游戏)

我正在学习更多关于 Java 8 及其功能的知识,我想用它做更多的练习。例如,我有以下命令式代码,用于在屏幕边界周围环绕一个圆圈:

  1. 我怎么能尝试“功能化”它?也许是一些伪代码?在我看来,可变性和状态似乎在这个例子中是固有的。
  2. 函数式编程不适合游戏开发吗?我喜欢两者,所以我试图将它们结合起来。
0 投票
3 回答
861 浏览

prolog - Prolog 规则中目标(语句)的顺序

我最近开始研究 Prolog,遇到了一个奇怪的问题。在这里,您可以看到一个代码示例(我使用SWI-Prolog 7.2.3),它给出了关系树和我对 2 个任务的解决方案。

当我想找到戴夫的亲戚时,我会:

然后我改变了我对下一个相对的定义:

我只是在最后一个语句中更改了目标的顺序。现在我有以下输出:

我在输出中看到了戴夫!这怎么发生的?我写了 X \== Y... 谁能给我一个很好的解释?

还有一个问题。如何让我的程序不写相同的答案?

谢谢!

0 投票
0 回答
43 浏览

java - 验证软件变更合同的结构规律

我正在做我的项目以创建一个工具,该工具可以找到特定软件的两个版本之间的结构规律(结构规律是源代码中必须遵守的规则)的变化,并检查最新版本是否违反结构规律旧版本的。

我正在使用一种称为EKEKO(针对 Eclipse 工作区的 Clojure 库元编程)的查询语言。我创建了要使用的谓词,并且我可以找到两个版本之间的区别。

但是我的问题是找到一种方法来举例说明:toString旧版本中调用的所有方法都应该有一个新名称,即print. 所以在这种情况下,我需要检查新版本是否符合结构合同(关于名称约定)。

在前面的代码中,我可以得到项目的两个版本之间的不同。我需要做的是类似于下面的代码:

projectResults 在给定项目上应用 Ekeko 环境并找到指定谓词的结果,在这种情况下(f1 和 f2)。

但是另外,我需要小心比较操作,因为不同项目中的同一个类并不意味着它们是相等的。

有什么想法可以帮助我继续前进吗?提前致谢!

0 投票
3 回答
1112 浏览

prolog - PROLOG 中的深度逆向 - 列表

嘿,我正在尝试创建一个谓词,用于在 PROLOG 中的嵌套列表上生成深度反向。

目前我得到了这个谓词

结果如下所示:

问题是,内部列表没有反转。它应该如下所示:

谢谢你的帮助。

0 投票
1 回答
140 浏览

prolog - 成员结合递归

我在大学学习 Prolog,并在家庭练习中不断发现一些相当奇怪的东西。我编写了以下 Prolog 子句,它们是更大程序的一部分:

它使用以下事实:

您可以将高速公路视为一个事实,它在前两个参数中描述了两个节点,在第三个参数中描述了一条边。所有事实一起形成一个连通图。

使用子句 edgesList,我想列出每个节点的边,例如

但是当我写我的查询时:

我得到以下结果:

出于某种原因,我认为,尽管成员谓词使用正确,Prolog 不会将结果列表的尾部与空列表统一起来。这是现在在不同的练习中发生过几次的事情,很高兴知道我做错了什么......

0 投票
3 回答
371 浏览

javascript - 编写一元函数链接器,代码战上的 TypeError 但 repl.it 上没有错误?

我在代码大战中解决了这个问题一段时间,并使用 repl.it 对其进行了测试。这是一个简单的一元函数链接器,但它只适用于 repl.it,而 codewars 在给出以下代码时会给我一个 TypeError:

它告诉我 currFunc 不是一个函数,但是使用以下测试代码,我在 repl.it 中运行时得到了正确的答案:

为什么它不是代码战中的功能有什么原因吗?

0 投票
2 回答
1463 浏览

spring - 将注释和字段序列化为 JSON

我有一个 Spring Boot 应用程序,我想向客户端发送 DTO 验证约束和字段值。

拥有 DTO

其中名称恰好是“Leviathan”,应该会导致这个 JSON 被发送到客户端:

推理是为验证提供单一的事实来源。这可以通过合理的工作量来完成吗?

0 投票
2 回答
1145 浏览

haskell - Haskell 是命令式还是声明式范式?

functional我已经阅读了一些资料,其中 Haskell的范式被描述为imperative范式。说这话的主要来源是维基百科。怎么可能afunctionalimperative范式同时存在,或者这是一个错误?

0 投票
2 回答
89 浏览

prolog - 所有具有相同开头和结尾的子字符串

我必须解决家庭作业,但我对 Prolog 的了解非常有限。任务如下:
编写一个 Prolog 程序,该程序可以列出字符串的所有子字符串,其长度至少为两个字符,并且第一个和最后一个字符相同。

例如:

我解决这个问题的方法是,我应该用头/尾遍历字符串并找到与当前相同的下一个字母的索引(它满足最小 2 长度要求)并用sub_string谓词切割子字符串。