问题标签 [imperative-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 投票
3 回答
1344 浏览

programming-languages - 命令式和疑问式代码是什么意思

我的经理让我在 ASP.net 中编写代码。我的命令式和疑问式代码是什么意思。它与程序员有什么关系?

0 投票
13 回答
13277 浏览

scala - 混合面向对象和函数式编程

有哪些语言可以同时促进面向对象和函数式编程?我知道任何支持一流函数的语言都可以被认为是函数式的,但我正在寻找一种专门针对两种编码风格的语法。

使用这样的语言,我想象将所有状态更改隔离到单个代码部分,并让程序的其余部分纯粹是功能性的。光是想想就让我流口水(调试天堂!)。

到目前为止,我已经发现了Scala,尽管我只是听说过它(而且它看起来很棒)。在这种“混合风格”范式中是否有任何大的竞争者?

0 投票
13 回答
14140 浏览

haskell - 现实世界中的 Haskell 与过程式编程

这些天来,我正在认真研究函数式编程。

虽然我对 Haskell 及其似乎提供的可能性感到非常兴奋,但我现在也可以看到我需要一段时间来学习。在一个关于如何学习 Haskell的 SO 问题中,一个答案指出实际上“掌握”它需要几个月甚至几年的时间。

现在,我知道 C、PHP、一些面向对象的东西等等。听说 Haskell 在“现实世界”中并没有太多使用,我会更好地提高我所知道的常规语言的技能吗?Haskell 值得奋斗吗?

在这个关于为什么人们认为函数式编程会流行的问题中,结论似乎是函数式编程会“流行”。但是程序编程肯定会保持领先,对吧?

编辑:keparo 很好地澄清了我的问题:与过程语言相反,学习 Haskell 和函数式编程范式对我来说是否有价值?

0 投票
5 回答
752 浏览

functional-programming - 函数式语言的程序更容易发生堆栈溢出吗?

我开始学习 ocaml,并且非常欣赏这种语言中递归的力量。但是,我担心的一件事是堆栈溢出。

如果ocaml使用堆栈进行函数调用,最终不会溢出堆栈吗?例如,如果我有以下功能:

它最终必须导致堆栈溢出。如果我要在 c++ 中做同样的事情(使用递归),我知道它会溢出。

所以我的问题是,是否有内置的保护措施来防止函数式语言溢出堆栈?如果不是,它们是不是像这样不那么有用,因为上面的求和算法,以带有 for 循环的程序风格编写,可以处理任何数字(不考虑整数溢出)?

0 投票
7 回答
696 浏览

f# - 如何从函数中删除命令式代码?

我是功能世界的新手,并感谢对此的帮助。

我想从这个简单的函数中取代丑陋的命令式代码,但不知道该怎么做。

我想要的是从 IEnumerable(F# 中的 seq)中随机选择一些关于概率值的元素 - 元组中的第二个项目(因此“概率”为 0.7 的项目将比 0.1 更频繁地被选择)。

我认为这randomPick很容易以命令方式实现,但在功能上呢?


这是功能性的,但需要list not seq (wanted)。

0 投票
3 回答
13425 浏览

java - Java 如何是一种“命令式”编程语言而不是“声明式”编程语言?

特别是与 C/C++(声明性的)相比,Java 的命令性如何?

0 投票
7 回答
2015 浏览

groovy - 函数式 Clojure 或命令式 Groovy 更具可读性吗?

好的,现在不作弊了。

不,真的,花一两分钟试试这个。

“职位”有什么作用?

编辑:根据 cgrand 的建议进行简化。

现在,这个版本怎么样?

我正在学习 Clojure,我很喜欢它,因为我一直很喜欢函数式编程。我花了更长的时间才想出 Clojure 解决方案,但我很高兴不得不想到一个优雅的解决方案。Groovy 解决方案没问题,但我发现这种类型的命令式编程既无聊又机械。在使用 Java 12 年后,我觉得使用 Clojure 进行函数式编程是我需要的推动力。

对了,进入正题。好吧,我不得不说实话,我想知道几个月后我再看 Clojure 代码时是否能理解它。当然我可以评论它,但我不需要评论我的 Java 代码来理解它。

所以我的问题是:这是一个越来越习惯函数式编程模式的问题吗?函数式编程大师是否阅读了这段代码并发现它很容易理解?觉得哪个版本更容易理解?

编辑:此代码的作用是根据玩家的积分计算玩家的位置,同时跟踪并列的玩家。例如:

0 投票
9 回答
1515 浏览

programming-languages - 函数式编程是命令式编程的子集吗?

函数式编程的主要特征之一是使用无副作用的函数。然而,这也可以用命令式语言来完成。递归和 lambda 函数(例如 C++0x)也是如此。因此,我想知道命令式编程语言是否是函数式编程语言的超集。

0 投票
19 回答
287442 浏览

c# - 编程中的声明式范式和命令式范式有什么区别?

我一直在网上搜索声明式和命令式编程的定义,这将为我带来一些启发。但是,我发现的一些资源中使用的语言令人生畏——例如在Wikipedia中。有没有人有一个真实的例子,他们可以向我展示这可能会给这个主题带来一些观点(也许在 C# 中)?

0 投票
4 回答
3960 浏览

functional-programming - 用于进度报告的惯用 clojure?

我应该如何监控 clojure 中映射函数的进度?

在以命令式语言处理记录时,我经常打印一条消息以指示事情进展的程度,例如每 1000 条记录报告一次。本质上,这是计算循环重复次数。

我想知道在 clojure 中我可以采取什么方法来解决这个问题,我在我的记录序列上映射一个函数。在这种情况下,打印消息(甚至记录进度)似乎本质上是副作用。

到目前为止我想出的看起来像:

例如:

还有其他(更好的)方法可以达到这种效果吗?

我在做什么有什么陷阱吗?(例如,我想我是在保持懒惰而不是抱着头。)