- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我刚刚开始学习 Haskell,但还没有掌握函数式编程。我需要创建一个多态数据类型,在运行我编写的函数之一之前我不知道其类型。该程序似乎希望我从列表中构建元组列表,例如:
['Car', 'Car', 'Motorcycle', 'Motorcycle', 'Motorcycle', 'Truck']
将转换为 [('Car', 2) , ('摩托车', 3), ('卡车', 1)]
.
在同一个元组列表(一个包)中,所有元素都具有相同的类型,但不同的包可能包含其他类型。现在,我的数据类型声明(我不确定它在 FP 中是否称为“声明”)如下:
type Amount = Int
data Bag a = [(a, Amount)]
但是,当我尝试加载模块时,出现此错误:
Cannot parse data constructor in a data/newtype declaration: [(a, Amount)]
如果我在声明中将 data
更改为 type
,我会收到所有函数的错误消息:
Expecting one more argument to ‘Bag’
Expected a type, but ‘Bag’ has kind ‘* -> *’
关于 FP 有什么我不明白的地方还是代码错误?更重要的是,我如何以实际上允许我将模块加载到 GHCi 中的方式声明这一点?
最佳答案
数据
类型这与函数式编程本身无关。如果你定义一个data
类型(或newtype
),在Haskell中它需要一个数据构造函数(对于newtype
)只能是一个数据构造函数,并且带有一个参数)。然而,[(a, Amount)]
对于数据构造函数来说不是一个好的“名称”(好吧,无论如何你都不打算将其用作数据构造函数)。
我们可以在这里编写一个数据构造函数,例如:
data Bag a = <b>Bag</b> [(a, Amount)]
由于这里 Bag
包含(可能)一个带有一个参数的数据构造函数,我们可以将其设为一个 newtype
:
<b>newtype</b> Bag a = Bag [(a, Amount)]
但是上述内容可能不是必需的:您可能希望使用 type
声明类型别名:
<b>type</b> Bag a = [(a, Amount)]
在这种情况下,你没有构造一个新类型,但是你可以写Bag a
,并且“在幕后”,Haskell将用替换它>[(a,金额)]
。
Bag
定义函数如果您现在想要定义一个处理 Bag
的函数,您还需要在签名中指定参数 a
,例如:
count :: Eq a => [a] -> Bag <b>a</b>
count = -- ...
现在很明显,我们在 a
的 Bag
中转换 a
列表。
关于Haskell - Bags - 如何在 Haskell 中使用多态性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52843680/
我是 HADOOP 和 PIG 的新手。 我有两个包: DUMP A: (1) (2) (4) DUMP B: (1,John,USA) (2,Richard,UK) (3,Ian,Ireland)
我有一个例子,我们正在尝试做一个看似简单的连接: A = load 'data6' as ( item:chararray, d:int, things:bag{(thing:chararray, d
研究该主题,可以找到作者使用“词袋”模型进行图像分类/检索的论文,而其他人则使用“特征袋”模型进行类似任务。 尽管我对所涉及的方法有基本的了解(检测和提取视觉词、构建视觉词典、使用机器学习训练分类器)
手册/文档广泛使用了“内袋”和“外袋”的语言(例如: http://pig.apache.org/docs/r0.11.1/basic.html ),但我无法清楚地确定分隔这些术语的精确定义。 例如所
这个问题已经有答案了: Type mismatch: cannot convert from Item to Item (1 个回答) 已关闭 7 年前。 我很困惑。我无法将外部类的实例变量 Node
我正在尝试使用 ORB 作为我的 detector 和 extractor 以及 BruteForce 创建一个词袋程序> 用于匹配器。 一切正常。 但我担心的是,当我尝试对我的描述符数组进行聚类时,
题目地址:https://leetcode.com/problems/bag-of-tokens/description/ 题目描述 Youhave an initial power P, an
我正在寻找一种数学变换,以将2D平面[0,1]x[0,1]上的点变换到单位球面上。 最常见的投影是通过将u和v解释为球坐标的角度来进行纬度-经度映射(将u映射为[0,2PI]和v映射为[-PI/2,
我有这个RDF A B D 1 C
我一直在看this tutorial标签部分让我感到困惑。不是标记本身的行为,而是教程中显示过程的方式。 更具体地说,#pragma omp 部分: #pragma omp parallel for
当使用 dask.bag 读取 json 文件时,如果文件中的 json 是多行,我会收到 JSONDecodeError 。 import json import dask.bag as db db
我不确定这个论坛是否适合这个问题,否则我很抱歉。 我对 Bag of Features 很陌生模型,我正在尝试实现以通过 vector 表示图像(对于 CBIR 项目)。 据我了解,给定训练集 S的
我正在尝试实现Haskell Bag(多集)。 到目前为止,我已经有了 data Bag a = EmptyBag | ListBag [(a, Integer)] deriving (Eq, Sho
我已经研究了 bag 和 idbag 之间的区别,我理解它们之间的区别,但我想了解的是,如果使用 bag 而不是 idbag ,是否会出现问题,反之亦然。有人可以用一个例子解释一下吗? 最佳答案 Ba
考虑以下 Hibernate 映射文件: ... 当我运行以下命令时: _session.EnableFil
我正在为 Fox and Geese 类型的游戏编写 AI。我的谓词之一如下所示: moveFox(+PrevState, -NextState, -PegList, +VisitedStates,
我刚刚开始学习 Haskell,但还没有掌握函数式编程。我需要创建一个多态数据类型,在运行我编写的函数之一之前我不知道其类型。该程序似乎希望我从列表中构建元组列表,例如: ['Car', 'Car',
我想像下面这样定义包 在上述情况下,hbm 文件中存在 xml 错误: 元素类型“bag”的内容必须匹配 “(元*,子选择?,缓存?,同步*,注释?,键,(元素|一对
Here ,我看到 Bag 类应该位于 java.util.Collection 中,但是当我尝试使用它时,我得到无法解析为类型 > 错误。 我应该复制+粘贴this或者是否缺少一些库? 最佳答案 这
我正在尝试使用 dask.bag 来保存给定类的对象,其中每个实例捕获文档的各种属性(标题、字数等)。 该对象有一些关联的方法,用于设置该对象的不同属性。 例如: import dask.bag as
我是一名优秀的程序员,十分优秀!