• 随着时间的推移,我注意到一种设计启发式方法,它极大地帮助了我完成无数项目。这种启发式的地方在于它在概念上易于理解和应用,但它自然会引导您更接近函数式编程。事实上,这与 Haskell 处理 IO 的方式非常相似。它也是 React 等现代 Web/UI 框架的核心理念。 icon
  • 从 Kotlin 使用 Java,也许更重要的是从 Java 调用 Kotlin,几乎在每个用例中都是完全无缝的。语言以相同的模式“思考”,因此您不会试图强迫 Java 成为纯粹的函数式或其他东西。如果我用 Kotlin 编写一个库,其他开发人员可以在 Java 领域使用它,而无需考 icon
  • 我学习了DDD领域驱动设计、六边形架构和面向数据的编程。我在 Airbnb与Daniel Low在Krispr icon
  • 让我们先来看看Optional(在Java8中引入)是做什么的?Optional是对一个对象的封装,提供了安全处理底层对象的方法,同时避免了可怕的空指针异常。这提供了与Kotlin的nullable数据类型基本相同的行为,并允许Java有办法模仿Kotlin的nullable icon
  • Flix 是一种有原则的函数式、命令式和逻辑编程语言,由奥胡斯大学、滑铁卢大学和开源贡献者社区开发。Flix 的灵感来自 OCaml 和 Haskell,以 icon
  • 到目前为止,在 Go 中创建函数 filter() 是很困难的,它可以根据谓词的布尔值来过滤任何元素的列表。如果你知道列表的类型,这是有可能的。 icon
  • 在Go 1.18之前,当你想从Go中的map中提取一个键列表时,你必须编写代码来迭代map并将键添加到一个slice中。从1.18起,有了新的泛型功能,你可以写一个单一的通用函数,从任何map中获取键,并在需要时使用它。不用再为特定类型的map编写代码了。伴随着Go 1.18 icon
  • 排序是新泛型功能的一个非常自然的用例。在Go中对slice进行排序是以前每次有新的slice类型时都要重新编写的事情之一。有时你会为两种不同的类型使用相同的代码。从Go 1.18开始,由于新的泛型功能,这不再是一个问题了。你可以编写一个单一的通用排序函数,它适用于任何 icon
  • map()函数是另一种函数式编程范式,由于新的泛型功能,它可以在Go中轻松实现。它的工作原理是应用一个函数,将单个slice元素作为参数,对其进行转换,并返回输出值,其中采取和返回的类型不一定相同。例如,你可以使用map()函数将字符串转换成int的slice;或者格式化字符 icon
  • 构成函数式编程范式核心的三个关键函数是 Map、Filter 和 Reduce。 Map在 map 函数中,您作为参数传递的函数将应用于可迭代对象。如果您熟悉列表推导式,Map 函数也有类似的效果。当我们需要同时在各种元素上映 icon
  • 规则引擎模式:这种模式的本质是if - else ,拆分if - else每个分支到规则类中,然后,主规则引擎类将保存所有规则并找到与客户端请求匹配的规则。定义规则类为了确保所有规则类都实现相同的方法,让我们定义一个每个类都将实现的接口: icon
  • 决策者模式是一种思考随时间变化的系统的概念方式。应用层和域代码之间的概念接口。它具有在它们之间产生极低摩擦的优势。 六边形架构 icon
  • 使用 Builder 模式的一个常见实现是拥有一个流畅的接口,以下为调用者代码: icon
  • 函数式语言通常具有不可变的数据类型——一旦创建了对象,您就无法更改它,尽管您可以将其作为其他对象的一部分包含在内。不可变对象更容易推理,并防止代码的两部分认为它们具有更改数据的独占访问权限的错误。我们将研究一种使用两个Stack以不可变方式实现队列Queue的方法。  icon
  • reduce()函数是由 JavaScript 和 Python 等其他编程语言推广的函数式编程概念。它的工作原理是通过对数组中的每个元素应用一个产生部分结果的函数,将一个数组还原成一个单一的值。最后一项之后的结果是整个列表的累积值。到目前为止,在 Go 中,创建这种适用于不 icon