繁体   English   中英

类型中的类型与值构造函数

Type vs. value constructors in typeclasses

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在学习Haskell,并对此示例感到困惑。

考虑以下:

class Tofu t where
    tofu :: j a -> t a j

data Frank a b = Frank {frankField :: b a} deriving (Show)

instance Tofu Frank where
    tofu x = Frank x

为什么在将Frank作为Tofu的实例时,我们提供(据我所知),类型构造函数Frank x ,而不是值构造函数,即tofu x = Frank {frankField = x}

1 个回复

你还在使用值构造函数。 您可以使用具有记录字段的类型而无需使用记录语法来构造它们,因此Frank xFrank { frankField = x }

如果您有多个记录字段,例如:

data Frank a b = Frank { frankA :: a, frankB :: b } 

...然后字段按照您写入的顺序显示,因此您可以执行以下操作:

-- With x :: a, y :: b
Frank x y
2 什么是类型,什么是scala中的类型构造函数

对于理解scala type意味着什么,我有点困惑。 在文档中,我读到List[Int]是一个类型,List是一个类型构造函数。 但是什么关键字type意味着当我写下面的内容? 以及如何type相关type可以被定义为例如性状的领域。 ...

2017-07-25 10:15:26 3 2816   scala
4 为什么在Haskell中,除了类型构造函数外,还要有一个值构造函数?

我是Haskell的新手,目前正在经历Real World Haskell。 该书说类型构造函数仅在类型签名中使用,而值构造函数在实际代码中使用。 它还提供了一个声明示例,以表明两者的名称彼此独立。 如果在实际代码中仅使用两个构造函数,为什么首先需要两个构造函数? 由于我们不会在实际代码 ...

5 如何在构造函数中传递枚举类型的值?

我对枚举类型不太熟悉,我必须创建一个体育竞赛类,该类是从类事件中扩展而来的。 它接受两个新参数,其中之一是枚举类型的季节。 不知道如何实现这一点,以便在初始化对象时可以选择其中之一。 ...

6 限制类型构造函数中的值[重复]

可能重复: 如何创建一定范围内的类型 我有数据类型: 在问题的上下文中, (Num Int)将表示的数字仅为单个数字。 有没有办法确保类型声明中的限制? 当然我们可以定义一个函数来测试Expr是否有效,但是让类型系统处理它会很好。 ...

2011-12-14 19:36:26 2 2755   haskell
8 Haskell 类型和值构造函数

通读一本书,我遇到了 Haskell Bool Type,它是 据我了解,在这种情况下 True 和 False 是值,并且以下类型的表达式有效 后来,当我想创建一个新类型时,我忘记命名 Value 构造函数并创建了以下类型。 在这种情况下,Haskell (GHCI) 没有抱怨。 但 ...

2020-04-14 00:46:18 1 169   haskell
9 类型…不是构造函数类型

我编写了一些在操场上工作的代码,以创建一个相交类型,以允许使用new来创建类型,或者改为调用构造函数。 在操场上可以正常工作: ( 见这里 ) 如果将VS 2017与最新更新结合使用,则根本无法使用。 $TestA extends MyObject失败, Type ICalla ...

10 TypeScript 中的抽象构造函数类型

TypeScript 中非抽象类(非抽象构造函数)的类型签名如下: 这也称为可新类型。 但是,我需要一个抽象类(抽象构造函数)的类型签名。 我的理解是可以被定义为具有类型Function ,但就是太宽泛。 没有更精确的选择吗? 编辑: 为了澄清我的意思,以下小片段演示了抽象构造函数和非抽 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM