• 函数编程中Functor函子与Monad是比较难理解的概念,本文使用了形象的图片方式解释了这两个概念,容易理解与学习,分别使用Haskell和Swift两种语言为案例。 1. 函子functor是一种实现fmap或map的数据类型 2. applicative是一种实现了Applicative 或a icon
  • 在Go 1.18之前,当你想从Go中的map中提取一个键列表时,你必须编写代码来迭代map并将键添加到一个slice中。 从1.18起,有了新的泛型功能,你可以写一个单一的通用函数,从任何map中获取键,并在需要时使用它。不用再为特定类型的map编写代码了。 伴随着Go 1.18的发布,golang icon
  • 排序是新泛型功能的一个非常自然的用例。 在Go中对slice进行排序是以前每次有新的slice类型时都要重新编写的事情之一。有时你会为两种不同的类型使用相同的代码。 从Go 1.18开始,由于新的泛型功能,这不再是一个问题了。 你可以编写一个单一的通用排序函数,它适用于任何数值可以被排序的类型。 你 icon
  • 使用Monad可以解决下面两个问题: 1. 假设每个函数会按次序共享一个全局状态,那么我们使用StateMonad。多个函数共享一个全局状态在面向对象范式中是使用对象Object完成,状态作为对象的字段,而函数作为对象的方法,如下: [code] Class A{ private int stat; icon
  • 检查一个数组是否包含一个给定的值是一个流行的编程函数,在许多编程语言中都是原生实现的。 在Go中,我们必须自己实现它,但由于新的泛型功能,我们可以编写一个单一的contains()函数,它将适用于任何类型的slice,其值可以被比较。 [code]package main import " icon
  • 基于线性代数monad的Monad模式代表了逐步将操作链接在一起的方式。绑定函数可以描述为根据“相同类型”契约将一个输出传递给另一个输入。在形式上,monad由一个类型构造函数M和两个操作组成:bind - 它将monadic对象和一个函数从普通对象转换为monadic值并返回,monadi icon
  • 从slice中获取最小值和最大值是开发人员在日常编码中编写的一些最简单的函数。 问题是,当你想从int和float64s这个slice中获取最小值或最大值时,1.18版本以前,你不得不为每个slice类型写两个函数。 然而,从1.18版本开始,Go引入了备受期待的泛型函数,现在你可以编写单一的min icon
  • map()函数是另一种函数式编程范式,由于新的泛型功能,它可以在Go中轻松实现。 它的工作原理是应用一个函数,将单个slice元素作为参数,对其进行转换,并返回输出值,其中采取和返回的类型不一定相同。 例如,你可以使用map()函数将字符串转换成int的slice;或者格式化字符串的slice的每个 icon
  • 根据这篇文章触发的灵感,写了两篇定义性文章: [url= [url= 一般网上谈到这两个概念,总是以Haskell或Scala为案例,由于对具体代码的熟悉程度不同,致使人们理 icon
  • reduce()函数是由 JavaScript 和 Python 等其他编程语言推广的函数式编程概念。 它的工作原理是通过对数组中的每个元素应用一个产生部分结果的函数,将一个数组还原成一个单一的值。最后一项之后的结果是整个列表的累积值。 到目前为止,在 Go 中,创建这种适用于不同类型的函数并不容易 icon
  • Monad 设计模式是一种函数式编程概念,它提供了一种以简洁优雅的方式封装复杂操作和计算的方法。通过提供一组用于组合函数和处理副作用的规则和约定,Monad 允许您编写易于阅 icon
  • 数学公式写进代码仓库:DeepSeek Harness用范畴论给AI Agent造骨架 一个AI Agent想要真正干活,光靠大脑远远不够! 当 deepseek 雇了 Jane Streeter 高手来领导 harness 团队,突然 harness 设计里就冒出了交换图的时候! 2026年8月1 icon
  • 这里介绍可以迭代 Map 和 List 最简单直接办法,代码量最少。 [b]方法 1:标准for方法:[/b] List: [code]for(String item:sList) {..}[/code] Map: [code]for(Map.Entry sEntry : sMap.entrySet icon
  • [b]什么是函子?[/b] 事实:如果您有Blob的来源,以及可以将Blob转换为Thing的函数,则可以将它们放在一起以创建Things的来源。 例子: [list] [*]如果我有 A(一个整数列表)和 B(一个将整数转换为字符串的函数),我可以轻松创建 C(一个字符串列表)。 [*]如果我有 icon
  • 这是来自数学家背景的大牛通过以时钟为比喻形象解释了群论和函数编程中的一些抽象概念,如Monoid、Monad等等。 下面大意翻译,原文见: [url= Programming, Abstraction, and Names[/url] 群论 icon
  • Monad是一种设计模式,使用一系列步骤来描述计算,它们典型地使用在纯函数语言中用于管理副作用,也可使用在多范式语言中用来控制复杂性。 Monad封装类型带来了附加的行为,比如空值(Maybe monad)的自动传播,或简化异步代码(Continuation monad) 为了描述一个Monad结构 icon