F#教程包括以下代码段:/// A record for a person's first and last name type Person = { First : string Last : string } /// define a discriminate...
据说 Haskell 元组只是代数数据类型的不同语法。同样,有一些例子展示了如何使用元组重新定义值构造函数。 例如,在 Haskell 中,Tree 数据类型可以这样写: data Tree a = EmptyTree | Node a (Tree a) (Tree a) 这些内容可以...
是否可能定义一个简单的语法概念来表示相等(类似于GHC可能自动为Haskell 98类型派生的Eq实例),而不需要显式地证明每个数据构造器是单射的,或者采取类似的方法,例如定义每个构造器的收缩和使用cong? 换句话说,是否可能更直接地利用数据构造器的单射性,而不必为每个构造器引入一个辅助函...
假设我有两个结构体:struct BlankDoc { width: u32, height: u32 } struct UrlDoc<'a> { url: &str<'a> } 有没有一种方法可以使用枚举来创建一个Doc类型,该类型将...
我是Haskell的新手,可能错过了一些非常基本的东西,但我无法在不同的数据类型中重复使用相同的值构造函数。data Colour = Red | Pink | Orange | Yellow data Fruit = Apple | Orange | Banana 这会产生错误,错误信息为...
我正在编写一个简单的用于网格轴的ADT。在我的应用程序中,网格可能是规则的(坐标之间的间隔是固定的),也可能是不规则的。当然,规则的网格只是不规则网格的一种特殊情况,但在某些情况下区分它们可能是有意义的(例如,进行一些优化)。因此,我将我的ADT声明为以下内容: data GridAxis ...
我在业余时间用Haskell编写词汇训练器。 我有一个包含单词的文件,其中每个词条都被建模为代数数据类型,看起来像:Word { _frq=1 , _fra="le" , _eng="the; him, her, it, them" , _deu="der,...
如何以最高效的方式序列化仅由构造函数组成的有限(非递归)代数数据类型? 例如:p = A | B q q = C | D r | E r = F | G 手动枚举这个非常小的定义的所有有效组合是可能的:A 0x00 B C 0x01 B D F 0x0...
season 函数使用代数函数,但我觉得代码很重复。 我该如何将其缩短到最短? data Month = Jan | Feb | Mar | Apr | May | June | July | Aug | Sept| Oct | Nov | Dec deriving (Eq,...
据我了解,来自Haskell的递归数据类型对应于从Hask类别的自函子的初始代数[1, 2]。例如: 自然数,data Nat = Zero | Succ Nat,对应于自函子F(-) = 1 + (-)的初始代数。 列表,data List a = Nil | Cons a (List ...