函数式编程指南

     

一张图:函数式编程 vs. 面向对象编程

1653 1
FP适合处理管道:GoF中的结构模式如#装饰器模式 其实使用FP替代很干净方便,没有必要一定要通过OOP的方式转个弯去实现。FP这种方式也适合 领域事件 在BC上下文之间的处理等场景OOP适合数据、领.

Python的Monad设计模式详解

1048 10K

Monad 设计模式是一种函数式编程概念,它提供了一种以简洁优雅的方式封装复杂操作和计算的方法。通过提供一组用于组合函数和处理副作用的规则和约定,Monad 允许您编写易于阅读、维护和测试的代码。无论.

Rust在函数式编程范式中的不足 - mmapped

1310 1 15K

本文详细介绍了如果您以函数式编程的思维方式来处理 Rust 会有多令人沮丧!对象、值和引用在深入研究 Rust 之前,了解对象、值和引用之间的区别是有帮助的。在本文的上下文中,值是具有不同标识的实体,.

所有的编程哲学都是关于状态的 | worldofbs

1163 3

我最近意识到所有不同的编程哲学都与状态有关,并且可以归结为关于如何使用状态的简单陈述:面向对象一次性修改大量的状态是很难正确的;因此:将状态的子集封装成独立的对象,并允许通过方法对封装的子状态进行有限.

鲍勃大叔:函数式编程真的不需要面向对象吗?

1372 3 2K

什么是类?根据字典,一个类是:一组、集合、群体或配置,其中的成员被认为具有某些共同的属性或特征;一个种类或类别。现在在阅读下一段时考虑一下这个定义:在OO语言中,我们将我们的程序组织成具有类似特征的对.

在 Java 中使用 Lenses

964

什么是Lenses ?是可链接的getter 和 setter :pendingOrders.map(setApprovalConfirmationUpdatedOn(LocalDateTime.no.

如何在 url 中存储应用程序的整个状态? - scottantipa

1086 2K

我正在开发一个在浏览器中运行的流程图编辑器,我希望人们能够使用它而不需要登录,也不需要在我们的服务器上存储任何数据。我想让他们控制他们的数据,并能够将其存储在本地,以便以后打开和编辑。而且还可以很容易.

关于如何以及为什么需要函数式编程? - Merrick

853 3K

让我们从一个例子开始:在 Advent of Code 2022 day 1 中,我们有一组数字的字符串,看起来像:10002000300040005000600070008000900010000我.

什么是函数式数据工程?

1212 1 6K

数据建模一直是Data LinkedIn的热门话题之一。Hadoop 提出了schema-on-read策略,导致了我们之前所知的数据建模技术的中断。我们经历了一个完整的周期,即“读取模式”导致了数据.

面向对象建模 = 面向宾语建模 != 主语思维

2208 2
JavaScript和python不同写法。“主语是什么”是一个重要的哲学课题。“有无主语?”、“什么是主语?”或“主语是什么?”、“什么应该做主语?”、“主语必须是真实存在吗?”、“主语是代指哪个实.

Java两张常用备忘录图

1416 1
1、Java正则表达式备忘录,一张图网尽正则表达式:2、Java8 stream流式语法备忘录一张图网尽所有Java 8流语法.

Golang默认HTTP函数有Bug吗? - Rachev

1135 6K

所有 Go 程序员都会很早就了解标准 HTTP 处理程序函数:func hello(w http.ResponseWriter, r *http.Request) {    w.Write([]byt.

幽默:英语是自然Lambda的

1523 1
上面这段长句子有这样特点:XXX.XX.Xxxx.XX 这种方式具有stream水流特点,这就是涉及到了下面两篇文章:组合用法有利于形成stream;静态工厂of也有利于形成stream。而母语非英语.

Java 17实现函数式错误处理 - softwaremill

1507 1 13K

在每个程序中,都会有出现问题并发生错误的情况。正因为如此,每种语言都有某种机制来帮助开发人员处理这种情况。在 Java 中,几乎所有代码和库都通过抛出异常来处理遇到的错误。抛出异常是一个非常强大的解决.

如何使用OO和函数式两个方法实现重构? - DZone

1124 2 2K

Java 中的重构有很多方面,但其中有两个基础:面向对象和函数式。面向对象几乎从第一个 Java 版本开始就存在,而函数式只出现在 Java 1.8(2014 年 3 月)中。Java 是一种经典的面.

Typescript中的函数依赖注入DI

982 2K

依赖性注入是将一个代码单元的逻辑与它的依赖关系分开。在函数的上下文中,它采取的形式是将这些依赖关系建模为依赖函数的参数,并将其作为参数传递(注入)。我发现DI在以下几个方面提供了价值。 它使mocki.

Spring Cloud Function现RCE 0-day漏洞

2022 1

近日,Spring Cloud Function 官方测试用例曝光了 Spring Cloud Function SPEL 表达式注入漏洞,可利用该漏洞通过注入 SPEL 表达式来触发远程命令执行。S.

HVM:Rust编写的比Haskell GHC更好的运行时

922

Haskell程序员可能会发现 HVM 项目非常有趣:高阶虚拟机 (HVM)是一个纯函数式编译目标,它是惰性的、非垃圾收集的和大规模并行的。它也是 beta 最优的,这意味着在某些情况下,它可以比大多.

在Go中使用泛型实现最小值和最大值函数 - gosamples

1637 2K

从slice中获取最小值和最大值是开发人员在日常编码中编写的一些最简单的函数。问题是,当你想从int和float64s这个slice中获取最小值或最大值时,1.18版本以前,你不得不为每个slice类.

在Golang中使用泛型实现“slice包含”检查函数

1719

检查一个数组是否包含一个给定的值是一个流行的编程函数,在许多编程语言中都是原生实现的。在Go中,我们必须自己实现它,但由于新的泛型功能,我们可以编写一个单一的contains()函数,它将适用于任何类.

在Golang中使用泛型从任何map中获取键的slice

2651 2K

在Go 1.18之前,当你想从Go中的map中提取一个键列表时,你必须编写代码来迭代map并将键添加到一个slice中。从1.18起,有了新的泛型功能,你可以写一个单一的通用函数,从任何map中获取键.

在Golang中使用泛型实现slice排序 - gosamples

2280

排序是新泛型功能的一个非常自然的用例。在Go中对slice进行排序是以前每次有新的slice类型时都要重新编写的事情之一。有时你会为两种不同的类型使用相同的代码。从Go 1.18开始,由于新的泛型功能.

在Golang中使用泛型实现slice过滤filter()函数 - gosamples

3055 2K

到目前为止,在 Go 中创建函数 filter() 是很困难的,它可以根据谓词的布尔值来过滤任何元素的列表。如果你知道列表的类型,这是有可能的。func filter(slice []string, .

使用Golang中的泛型创建“map”函数 - gosamples

1518 2K

map()函数是另一种函数式编程范式,由于新的泛型功能,它可以在Go中轻松实现。它的工作原理是应用一个函数,将单个slice元素作为参数,对其进行转换,并返回输出值,其中采取和返回的类型不一定相同。例.

在Golang中使用泛型reduce函数 - gosamples

880

reduce()函数是由 JavaScript 和 Python 等其他编程语言推广的函数式编程概念。它的工作原理是通过对数组中的每个元素应用一个产生部分结果的函数,将一个数组还原成一个单一的值。最后.

基于函数式编程的领域驱动设计 - Scott Wlaschin

1372 1 5K

Scott Wlaschin 是一名开发人员、架构师和作家。他是流行的 F# 网站 fsharpforfunandprofit.com 的作者,以及 Pragmatic Bookshelf 出版的《D.

用Java optional模仿Kotlin? - Welsh

801 1 3K

让我们先来看看Optional(在Java8中引入)是做什么的?Optional是对一个对象的封装,提供了安全处理底层对象的方法,同时避免了可怕的空指针异常。这提供了与Kotlin的nullable数.

Java程序员学习Rust编程 - infoworld

1304 1 8K

如果您是 Java 开发人员,您会发现 Rust 相对容易掌握,这要归功于这两种语言的相似性。根据Stack Overflow的调查,Rust 已经在语言流行度或最常用语言的阶梯上攀升,但最引人注目的.

Java社区对Kotlin有什么看法? - reddit

1223 2 2K

从 Kotlin 使用 Java,也许更重要的是从 Java 调用 Kotlin,几乎在每个用例中都是完全无缝的。语言以相同的模式“思考”,因此您不会试图强迫 Java 成为纯粹的函数式或其他东西。如.

副作用是编程头号敌人!如何剥离它?- spin

1229 1 2K

随着时间的推移,我注意到一种设计启发式方法,它极大地帮助了我完成无数项目。这种启发式的地方在于它在概念上易于理解和应用,但它自然会引导您更接近函数式编程。事实上,这与 Haskell 处理 IO 的方.