我想知道将类Haskell的数据类型翻译为Scheme的最佳方法是什么。我的当前计划是使用vector来表示构造器,第一个元素是代表变体的label。例如,下面是一个Haskell程序: data Bits = O Bits | I Bits | E deriving Show ...
当处理较大的代数数据类型时,Haskell中存在一种特定的递归遍历方式,无法通过对数据类型进行折叠来捕获。例如,假设我有一个简单的数据类型,用于表示命题逻辑中的公式,并定义了一个在其上进行折叠的函数: type FAlgebra α φ = (φ, φ, --...
据说 Haskell 元组只是代数数据类型的不同语法。同样,有一些例子展示了如何使用元组重新定义值构造函数。 例如,在 Haskell 中,Tree 数据类型可以这样写: data Tree a = EmptyTree | Node a (Tree a) (Tree a) 这些内容可以...
我希望针对不同的State实现处理不同的可观察链逻辑。可以通过使用密封类/代数数据类型/联合和.flatMap()轻松实现,但这会中断流,其中像.distinctUntilChanged()这样的运算符仅在.flatMap()函数内部起作用,而不是在整个流中起作用。 sealed class...
我正在尝试按照这篇文章中所述的方式创建案例类。sealed abstract case class Exp() case class Literal(x:Int) extends Exp case class Add(a:Exp, b:Exp) extends Exp case class S...
我最近了解了函数式编程(在Haskell和Scala中)。它的能力和优雅非常迷人。 但是当我遇到单子Monad时,它使用了一个名为幺半群Monoid的代数结构,我感到惊讶和高兴,因为我一直在数学中学习的理论知识被应用于编程。 这个观察让我产生了一个问题:群、域或环(请参见代数结构了解其他结...
Kotlin有类似的判别式联合类型(求和类型)吗?如果有的话,这个(F#)的惯用Kotlin翻译是什么?type OrderMessage = | New of Id: int * Quantity: int | Cancel of Id: int let handleMes...
根据这篇论文,微分在数据结构中起作用。 根据这个回答: 微分,即数据类型D(表示为D')的导数是具有单个“空洞”的D结构类型,即不包含任何数据的特殊位置。这些结构遵循微积分中相同的规则,这是令人惊奇的。 这些规则如下: 1 = 0 X′ = 1 (F + G)′ = F' + G′...
我是一名C#开发人员,正在阅读"Real World Haskell"这本书,以便真正理解函数式编程。这样当我学习F#时,我就可以真正领会它,而不仅仅是“用C#代码写F#代码”。 今天,我遇到了一个例子,我认为我已经理解了3次,然后才发现漏掉了某些东西,更新了我的解释,并递归(也诅咒过,相信...
F#教程包括以下代码段:/// A record for a person's first and last name type Person = { First : string Last : string } /// define a discriminate...