问题标签 [functional-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 投票
8 回答
10025 浏览

f# - 你如何设计一个功能程序?

从我编程生涯的第一天开始,我就开始使用面向对象编程。但是,我对学习其他范式很感兴趣(我在这里多次说过是件好事,但我没有时间去做)。我想我不仅准备好了,而且有时间,所以我将开始使用 F# 进行函数式编程。

但是,我不确定如何构建更少的设计应用程序。我习惯于 OO 编程中的每个文件一个类和类名词/功能动词的想法。您如何设计和构建功能性应用程序?

0 投票
4 回答
3299 浏览

functional-programming - 从 Ruby、Lisp、Haskell 和 Erlang 转向 Ocaml

我一直在阅读有关 Ocaml 始终如一的速度、快速原型设计能力和出色的内存管理的信息,并决定接受它。

因为我已经掌握了 Ruby、*lisp、Haskell 和 Erlang,所以我特别感兴趣的是我应该在 Ocaml 中注意哪些违反 KISS 的特性。

如果您以上述语言的背景开始 Ocaml,那么最令人沮丧的事情是什么?你是如何解决这个困难的?什么类比帮助你进入了语言的流程?

我也很想知道你是否已经做的不仅仅是简单地学习了 Ocaml,并且实际上已经为你的大部分编码问题转换了它。

0 投票
5 回答
11965 浏览

c# - 什么是 catamorphism,它可以在 C# 3.0 中实现吗?

我正在尝试了解 catamorphisms,我已经阅读了 Wikipedia 文章以及Inside F#博客上的F # 主题系列中的前几篇文章。

我知道这是折叠的概括(即,将许多值的结构映射到一个值,包括将值列表映射到另一个列表)。我认为 fold-list 和 fold-tree 是一个典型的例子。

可以使用 LINQ 的Aggregate运算符或其他一些高阶方法在 C# 中完成吗?

0 投票
12 回答
2751 浏览

functional-programming - 函数式编程适合哪种类型的问题?

函数式编程似乎是计算机科学中的一种范式,它的呼声越来越高。

我想知道使用函数式编程方法而不是更传统的面向对象方法可以更好地解决哪种问题。

谢谢你。

0 投票
15 回答
26214 浏览

java - 如何在 Java 中识别不可变对象

在我的代码中,我正在创建一个对象集合,这些对象将由各种线程以一种仅在对象不可变时才安全的方式访问。当尝试将新对象插入我的集合时,我想测试它是否是不可变的(如果不是,我将抛出异常)。

我可以做的一件事是检查一些众所周知的不可变类型:

这实际上让我完成了 90% 的工作,但有时我的用户会想要创建自己的简单不可变类型:

有什么方法(可能使用反射)可以可靠地检测一个类是否是不可变的?误报(认为它不可变时认为它是不可变的)是不可接受的,但误报(认为它不可变时认为它是可变的)是不可接受的。

编辑添加:感谢您提供有见地和有用的答案。正如一些答案所指出的,我忽略了定义我的安全目标。这里的威胁是无知的开发人员——这是一段框架代码,将被大量对线程几乎一无所知并且不会阅读文档的人使用。我不需要防御恶意开发者——任何足够聪明地改变字符串或执行其他恶作剧的人也将足够聪明地知道在这种情况下它是不安全的。代码库的静态分析是一种选择,只要它是自动化的,但不能指望代码审查,因为不能保证每个审查都会有精通线程的审查者。

0 投票
15 回答
58189 浏览

functional-programming - 什么是参照透明度?

参考透明度一词是什么意思?我听说它被描述为“这意味着你可以用 equals 替换 equals”,但这似乎是一个不充分的解释。

0 投票
6 回答
1235 浏览

ruby - Ruby 真的可以用作函数式语言吗?

Ruby 真的可以用作函数式语言吗?有哪些好的教程可以教授这门语言?注意:我真的很想使用并坚持使用 Ruby 作为我的主要语言,所以我现在对转换为 YAFL(另一种函数式语言)不感兴趣。我对 Ruby 的功能方面在标准功能语言基线上的表现非常感兴趣。谢谢。

0 投票
8 回答
1570 浏览

functional-programming - 函数式编程的定义点

我可以列举函数式编程的许多特性,但是当我的朋友问我你能为我定义函数式编程吗?我不能。

0 投票
8 回答
17776 浏览

functional-programming - 逻辑编程的最佳用途是什么?

我所说的逻辑编程是指声明性编程语言的一个子范式。不要将此问题与“您可以使用 if-then-else 解决什么问题?”混淆。

像 Prolog 这样的语言非常吸引人,值得为了学习而学习,但我不得不想知道什么样的现实世界问题最好用这种语言来表达和解决。有更好的语言吗?逻辑编程是否存在于更流行的编程语言中?答案的愤世嫉俗的版本是Python Paradox的变体吗?

0 投票
13 回答
57609 浏览

c - C语言中的函数式编程有哪些工具?

我最近一直在思考如何在 C(不是C++)中进行函数式编程。显然,C 是一种过程语言,并不真正支持本机的函数式编程。

是否有任何编译器/语言扩展可以为语言添加一些函数式编程结构?GCC 提供嵌套函数作为语言扩展;嵌套函数可以从父栈帧访问变量,但这距离成熟的闭包还有很长的路要走。

例如,我认为在 C 语言中真正有用的一件事是,在需要函数指针的任何地方,您都可以传递 lambda 表达式,创建一个衰减为函数指针的闭包。C++0x 将包含 lambda 表达式(我认为这很棒);但是,我正在寻找适用于纯 C 的工具。

[编辑] 澄清一下,我并不是要解决 C 中更适合函数式编程的特定问题。如果我想这样做,我只是好奇那里有什么工具。