Haskell 继承、数据、构造函数

2023-12-13

所以我想为我的小行星游戏/作业定义多个数据类:

data One = One {oneVelocity :: Velocity, onePosition :: Position, (((other properties unique to One)))}
data Two = Two {twoVelocity :: Velocity, twoPosition :: Position, (((other properties unique to Two)))}
data Three = Three {threeVelocity :: Velocity, threePosition :: Position, (((other properties unique to Three)))}

正如您所看到的,我有多个数据类,它们具有一些重叠的属性(速度、位置)。这也意味着我必须为每个数据类指定不同的名称(“oneVelocity”、“twoVelocity”,...)。

有没有办法让这些类型的数据扩展一些东西?我想过使用一种具有多个构造函数的数据类型,但其中一些当前数据类非常不同,我不认为它们应该驻留在具有多个构造函数的一个数据类中。


您可能应该只对所有这些使用单一数据类型,但是参数化的关于具体细节:

data MovingObj s = MovingObj
        { velocity :: Velocity
        , position :: Position
        , specifics :: s }

然后你可以创建例如asteroid :: MovingObj AsteroidSpecifics,但您也可以编写适用于任何此类移动对象的函数,例如

advance :: TimeStep -> MovingObj s -> MovingObj s
advance h (MovingObj v p s) = MovingObj v (p .+^ h*^v) s
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Haskell 继承、数据、构造函数 的相关文章

  • 如何为带有继承的 C++ 类编写 C 包装器

    我只是想知道是否有一种方法可以为具有继承的 C 类创建 C 包装 API 考虑以下 class sampleClass1 public sampleClass public int get return this data 2 void s
  • 将参数传递给基类构造函数

    如果基类和派生类都有带参数的构造函数 那么我们在哪里将参数传递给基类构造函数 像这样 public class DerivedClass BaseClass public DerivedClass int derivedParam Stri
  • 将 num 的签名键入 double?

    我才刚刚开始为你学习 Haskell 以获得伟大的好处 并且我在类型类方面遇到了一些麻烦 我想创建一个接受任何数字类型并强制其为双精度的函数 我的第一个想法是定义 numToDouble Num gt Double 但我认为这不起作用 因为
  • 选择要重写哪个基类的方法

    鉴于以下情况 class Observer public virtual void Observe Parameter p 0 template
  • 规范化且不可变的数据模型

    Haskell如何解决 规范化不可变数据结构 问题 例如 让我们考虑一个表示前女友 男友的数据结构 data Man Man name String exes Woman data Woman Woman name String exes
  • 以下两个 lambda 函数的空间复杂度

    我正在阅读以下内容 https en wikibooks org wiki Haskell Graph reduction https en wikibooks org wiki Haskell Graph reduction 其内容如下
  • 如何使用继承来建模 RESTful API?

    我有一个需要通过 RESTful API 公开的对象层次结构 但我不确定我的 URL 应该如何构建以及它们应该返回什么 我找不到任何最佳实践 假设我有从动物继承的狗和猫 我需要对狗和猫进行CRUD操作 我还希望能够对一般动物进行手术 我的第
  • 子类 B 继承自模板类 A [重复]

    这个问题在这里已经有答案了 我最近偶然发现了如下代码 但我无法理解它 template
  • 检查一个类是否是另一个类的子类

    我想在不创建实例的情况下检查一个类是否是另一个类的子类 我有一个类 它接收类名作为参数 作为验证过程的一部分 我想检查它是否属于特定的类系列 以防止安全问题等 有什么好的方法可以做到这一点吗 is subclass of http php
  • Java继承,扩展类如何影响实际类

    我正在查看 Sun 认证学习指南 其中有一段描述了最终修饰符 它说 如果程序员可以自由地扩展我们所知的 String 类文明 它可能会崩溃 他什么意思 如果可以扩展 String 类 我是否不会有一个名为 MyString 的类继承所有 S
  • Haskell 入门

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 几天来 我一直试图理解 Haskell 中的函数式编程范例 我通过阅读教程和观看截屏视频
  • Traversable 类型类的用途

    有人可以向我解释一下类型类的目的是什么吗Traversable 类型类定义是 class Functor t Foldable t gt Traversable t gt where So Traversable is a Functor
  • Haskell:Data.Numbers.Primes 库在哪里?

    我尝试导入 Data Numbers Primes import Data Numbers Primes 伦哈斯克尔给了我 5 hs 1 8 Could not find module Data Numbers Primes Use v t
  • C++派生模板类继承自模板基类,无法调用基类构造函数[重复]

    这个问题在这里已经有答案了 我试图从基类 模板 继承 派生类也是模板 它们具有相同的类型 T 我收到编译错误 非法成员初始化 Base 不是基类或成员 为什么 如何调用基类构造函数 include
  • 为什么 ZipList 不是 List 的默认应用实例

    我目前正在学习 Haskell 中的应用程序 如果我没记错的话 列表有两个不同的应用实例 List and ZipList 第二个被定义为包装列表值的新类型 这ZipList应用实例对我来说似乎更直观 这可能是一个愚蠢的问题 但有具体原因吗
  • 在 monad 转换器类型类中使用列表 monad?

    我的目标是创建一个在 ReaderT WriterT 堆栈或 RWS 堆栈中使用列表 monad 的函数 更一般地说 如何在 mtl 类型类 例如 MonadReader MonadWriter 中使用列表 monad 我为什么要尝试这样做
  • 带有 RankNTypes 扩展的奇怪类型推断

    我正在尝试在 Haskell 中尝试 System F 类型 并通过以下方式实现了自然数的 Church 编码type 当加载这段代码时 OPTIONS GHC Wall LANGUAGE RankNTypes type CNat fora
  • 检查对以下内容的理解:“变量”与“变量” “价值”、“功能”与“抽象”

    这个问题是后续问题this one https stackoverflow com questions 25327705 is function a sort of variable 25329157 25329157在学习 Haskell
  • Haskell Data.Decimal 作为 Aeson 类型

    是否可以解析一个数据 十进制 https hackage haskell org package Decimal 0 4 2 docs Data Decimal html使用 Aeson 包从 JSON 获取 假设我有以下 JSON foo
  • 类型级别集结合律的证明

    我试图证明类型级函数Union https hackage haskell org package type level sets 0 8 5 0 docs Data Type Set html t Union是关联的 但我不确定应该如何完

随机推荐

  • 从代码隐藏文件中检查 CheckBoxField

    看来 CheckBoxField 不接受 ID 属性 因此我无法直接调用代码隐藏文件中的组件
  • Web 应用程序如何向 iOS 设备发送推送通知? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我正在开发一个网络应用程序 当有新内容时 如何向 iOS 用户发送推送通知 更具体地说 为了让 Web 应用程序向移动设备 例如 iPhone 发送推送通知 移动设备必须已注册才
  • 使用多处理时 Python 实例变量未更新

    我在更新变量方面遇到了一个不寻常的问题 我构建了一个简单的类对象来帮助我进行一些网络嗅探 我想要创建一个并行进程 它允许我运行一些网络测试并捕获使用 python 生成的流量 这样我就可以扩展程序来完成令人惊奇的事情 我正在使用 scapy
  • 如何使用外部 api 访问令牌而不将其暴露给用户?

    很抱歉 如果这可能是一个微不足道的问题 但我想确定一下 但无法在网上找到明确的答案 我正在编写一个使用 Mapbox 的小应用程序 并且我正在使用反应地图GL为了它 他们需要客户端的访问令牌 因此他们建议使用环境变量 我的问题是 是否可以简
  • 围绕轮廓对象生成颜色直方图

    嘿 OpenCV Emgu 大师们 我有一张正在为其生成轮廓的图像 请参见下文 我正在尝试生成基于颜色直方图的图像搜索空间修剪以查找 如何使蒙版仅围绕突出的物体轮廓并遮挡其余部分 所以我有一个由两部分组成的问题 如何 反转 轮廓外的图像 漫
  • 如何使用 Python 创建一个流式传输在线广播的 Discord 机器人

    正如标题所提到的 我该怎么做呢 到目前为止 我花了几个小时试图找到答案 但由于这不是一个受欢迎的请求 因此没有任何相关内容 我发现的大部分内容只是使用 youtube dl 下载 yt 音频并播放它 编辑 更新以使用FFmpegPCM音频流
  • 从文件中解析逗号分隔的 JSON

    我正在读取一个包含用逗号分隔的 JSON 的文件 例如 JSON JSON JSON 我确定它们是用逗号分隔的 但不确定它们是用换行符分隔的 该 JSON 可能全部位于一行 但可以肯定的是它们是用逗号分隔的 我还没有收到该数据 我想知道如何
  • 当数组包含日期时,从 Firestore 中删除数组项不起作用

    我花了几天时间研究这个问题 包括各种答案 例如 Firebase Firestore 从文档数组中追加 删除项目以及我之前的问题 从 Firestore 中删除数组项但无法弄清楚如何真正使其发挥作用 事实证明 问题在于对象中存在日期属性 如
  • WPF - ItemTemplate 未按预期运行

    我有一个UserControl我用它来显示列表UIElement是 该控制由一个单一的ItemsControl与它的ItemPanelTemplate切换为水平StackPanel its ItemsSource绑定到一个Dependenc
  • 插入表变量 CTE

    如何将 cte 的结果插入到表变量中 像这样的东西吗 DECLARE myData TABLE Title nvarchar 350 NOT NULL Id int NOT NULL INSERT INTO myData with CTE
  • 在所有窗口之上运行 hta

    我有一个 HTML 应用程序 我想保留在所有窗口的顶部 也就是说 如果打开 切换到另一个窗口 我希望这个窗口覆盖它 JavaScript 解决方案在 Windows 7 IE9 模式下不起作用 不确定是什么阻碍了它 也无法更改 而 VBSc
  • 没有表的映射关联的 Hibernate 标准投影

    我有 2 张桌子说 表1和表2 现在 Table1 有 3 列 即 t1 t2 t3 Table2 有 2 列 t4 和t5 我必须通过联接从两个表中获取数据 但注释或 xml 中的两个表之间没有映射关联 现在的主要问题是我必须使用休眠投影
  • 在 Visual Studio 2017 .NET Core 项目中支持 Roslyn 分析器(.ruleset)

    如何在 Visual Studio 2017 NET Core 项目中添加对 Roslyn 分析器 ruleset 的支持 在 project json 中 它是通过使用配置的buildOptions buildOptions additi
  • Varchar 或 Text 数据类型,字符串长度最多为数千个字符

    我有一个小型社交网站 包含帖子和评论 我决定让用户使用他们想要的任意数量的字符创建帖子 我认为存储此类内容的最佳数据类型是Text 但对于评论 大多数情况下用户只写一行或几行文字 这就是为什么我认为我必须将注释字符串长度限制为最大 3000
  • 从 C# 关闭最小化/图标化进程

    这是我的问题 我需要从 C 程序关闭一个已经运行的进程 问题是该进程现在作为图标运行 最小化到任务栏 除非用户至少打开它一次 这在无人值守的计算机上永远不会发生 否则它永远不会 有一个主窗口 我的另一个要求是应用程序是closed not
  • 尽可能均匀地分配数量

    我们有一定的数量 例如300 单位 该数量应尽可能均匀地分布在 40 个 槽 上 如果每个槽都相同 那就很容易了 所以每个槽都是 7 5 然而 插槽的大小各不相同 我们不能 填充 超过其 大小 允许的范围 例如如果只有 5 个 我们无法 填
  • 有没有直接的方法将 Informix 上的 Unix 时间转换为 YYYY-MM-DD HH:MM:SS?

    我知道使用 PHP 或 Perl 可以轻松完成类似的事情 但我想知道是否有一种方法可以直接在 Informix 上完成 例如函数FROM UNIXTIME 在 MySQL 上 我认为你可以使用 dbinfo 和 utc to datetim
  • 使用php将mysql表列表从mysql导出到csv文件

    我想知道是否有人可以向我展示一个示例 PHP 代码 说明如何将 MySQL 数据库中的大约 50 个表导出到 CSV 文件 我的数据库名称是 samples 该数据库下有大约 49 个表 我希望该数据库下的每个表 大约有 20 00 行 导
  • 使用 Google Sheets 脚本,为什么我的 if 语句在比较单元格值时总是返回 false?

    我需要比较两个单元格值并在它们不同时对其采取行动 然而 在比较单元格内容时 我的 if 语句总是返回 false 我不明白为什么 function onEdit var ss SpreadsheetApp getActiveSpreadsh
  • Haskell 继承、数据、构造函数

    所以我想为我的小行星游戏 作业定义多个数据类 data One One oneVelocity Velocity onePosition Position other properties unique to One data Two Tw