问题标签 [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 投票
4 回答
1840 浏览

c - 将递归二叉树遍历转换为迭代

我被要求写迭代版本,但我写的是递归版本,即

我不是在寻找代码,我想了解如何做到这一点。如果这只是最后一次递归调用,我会这样做

但是当有两个递归调用时,如何转换为迭代程序呢?

以下是类型定义。

这就是我的想法,我在正确的轨道上吗?

0 投票
2 回答
1153 浏览

multithreading - 停留在并发编程示例中,使用伪代码(原子操作/细粒度原子性)

我的提供了一个简单的例子,我对此有点困惑:

它说,“考虑以下程序,并假设细粒度的原子操作正在读取和写入变量:”

“如果x = y + z是通过加载一个带有y的寄存器然后添加z来实现的,x的最终值可以是0、1、2或3。”

2?2如何工作?

注意:co 启动一个并发进程和 // 表示并行运行的语句

0 投票
4 回答
446 浏览

programming-languages - 有没有标准化的方法将功能代码转换为命令代码?

我正在编写一个用于从 javascript 代码生成 php 检查的小工具,我想知道是否有人知道将功能代码转换为命令式代码的标准方法?

我发现这篇论文:工作中的去功能化它很好地解释了去功能化。

Lambdalifting 和去功能化在一定程度上回答了这个问题,但是数据结构呢,我们仍然在解析列表,就好像它们都是链表一样。是否有办法将函数式语言的链表转换为其他高级数据结构,如 c++ 向量或 java 数组列表?

0 投票
1 回答
191 浏览

functional-programming - 如何使鼠标事件处理更容易?

有时我必须实现自定义拖放等功能。代码可能是这样的:

我知道这很好用,但我根本不喜欢这样的冗余变量和分离程序。在 IP(命令式编程)中可能是不可避免的;我的问题是,有没有更好的方法来处理 FP(函数式编程)中的这种事情?无论是哪种编程语言、Lisp、Scheme、F#、Ruby 等,还是在 IP 中执行此操作的更好方法,任何想法和建议都会受到赞赏?

0 投票
4 回答
1338 浏览

scala - 什么时候命令式风格更合适?

来自Programming in Scala (second edition),第 98 页的底部:

Scala 程序员的平衡态度

更喜欢 val、不可变对象和没有副作用的方法。首先到达他们。当您有特定的需求和理由时,请使用具有副作用的变量、可变对象和方法。

前几页解释了为什么更喜欢 val、不可变对象和没有副作用的方法,所以这句话很有意义。

但是第二句话:“当你有特定的需要和理由时,使用 vars、可变对象和具有副作用的方法。” 解释得不是很好。

所以我的问题是:

使用具有副作用的变量、可变对象和方法的理由或具体需要是什么?


Ps:如果有人可以为每个例子提供一些例子(除了解释),那就太好了。

0 投票
1 回答
583 浏览

functional-programming - 方案 - 函数式编程的必要条件

我刚刚开始学习函数式编程(方案)。但我仍然在“功能上”思考问题。

就像是:

那里有一个状态变化,所以这是命令式编程。

如果我将“if”部分放入另一个函数中,这是否使它具有功能?

这就是一切吗?

谢谢!

0 投票
1 回答
45 浏览

oop - 命令式编程中对对象的约束的技术术语

我知道这有一个技术术语,对于我的生活,我不记得了:

在设计一个类(或某种具有函数和数据的东西)时,对对象方法的每次调用都应该使对象的数据保持一致的状态。“一致”是指符合一系列(希望有文档记录,通常未编程)称为 [X]s 的约束。

0 投票
3 回答
1105 浏览

scheme - 在 Scheme 中命名一个列表

我试图在 Scheme 中创建一个类似数组的数据结构,因为我需要经常引用它(并改变它!),所以我想给它一个名字。但从我在各种教程网站上阅读的内容来看,似乎唯一命名列表以供以后参考的方法是使用define. 这很好,除了它看起来像一旦我用 初始化一个列表define,改变或添加到所述列表变得更加复杂。例如,我似乎无法做到(append wordlist (element)),我需要某种方式!砰。

基本上我的问题归结为:define我唯一的希望是命名一个列表吗?如果是这样,我是否被困在改变其元素的圈套中?谢谢。

0 投票
2 回答
843 浏览

scala - 命令式与功能式示例

我有一个以命令式和功能性(我在这里尽了最大努力)方式实现的方法。该方法遍历 ArrayBuffer[Creature],计算到每个生物的距离并返回最近的或无(如果世界上没有生物,除了“this”)。

至关重要的:

功能:

功能代码看起来不那么明显(可能可以简化,但我不知道如何简化)而且我不确定我是否能够在一个月内快速阅读它。我的问题是习惯或功能问题不适合这种特殊情况吗?刚开始使用 Scala 的时候,你有没有这样的疑惑?一段时间后,您的功能技能是否有很大提高并完全击败了命令式方法?请发表您的经验。

谢谢!

0 投票
5 回答
26753 浏览

functional-programming - 函数式编程与声明式编程与命令式编程

我已经习惯了命令式编程,这是告诉计算机逐步执行程序以获得最终结果的常用方法。另一方面,声明式编程只是传递输入并期望输出,而不说明它是如何完成的过程。我感到困惑的是函数式编程。我知道函数式编程是一种编程范式,它将计算视为对数学函数的评估,并避免状态和可变数据,并且不是一种声明性语言。但是,我仍然无法理解它是如何工作的。

让我们举一个执行斐波那契数列的例子。

命令式编程:

声明式编程:

功能程序如何工作?

另外,如果我的定义错误,请纠正我。请随意发表评论..