是否可以在 GHCi 中定义新的 ADT

2024-02-19

在评论 ghci 的新功能时,我希望 ghci 能够声明类型声明并声明新的 ADT 类型,有人告知这确实是可能的,经过搜索我发现这一页 https://stackoverflow.com/questions/3093133/how-to-provide-explicit-type-declarations-for-functions-when-using-ghci这告诉我我可以做

let numUniques' :: (Eq a) => [a] -> Int; numUniques' = length . nub

显然,相同类型的语法适用于模式匹配(例如,let a 1=True;a 2=False)。

创建 ADT 会让它几近完美吗?有谁知道目前是否可行? 我应该制作一个 ADT 临时文件并重新加载它吗?

附:有谁知道是否有这样做的计划?是否有 ghc(i) 的功能请求?

我也知道它是开源的,但我目前还不够聪明,无法破解 ghc(i)。


这是从发布的 GHC 7.4.1 版开始添加的早在二月 http://www.haskell.org/pipermail/glasgow-haskell-users/2012-February/021764.html:

jcp@butler:~$ ghci
GHCi, version 7.6.1: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude> data Test = Foo | Bar | Baz deriving (Read, Show)
Prelude> Foo
Foo
Prelude> read "Bar" :: Test
Bar
Prelude> :t Baz
Baz :: Test
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以在 GHCi 中定义新的 ADT 的相关文章

  • 如何处理错误的数据类型输入

    在C 中 如何处理错误的输入 例如 如果程序要求输入一个整数 那么当您键入一个字符时 它应该能够执行某些操作 然后循环重复输入 但是当您在需要整数时输入一个字符时 循环会无限循环 反之亦然 程序进入死循环的原因是std cin由于输入失败而
  • 使用 nix 在 Mac OS X 上由于“架构 x86_64 的未定义符号”而导致“堆栈构建”失败

    首先是错误消息 stack build Linking Users yuzhao stack setup exe cache x86 64 osx tmp Cabal simple mPHDZzAJ 2 2 0 1 ghc 8 4 4 cl
  • 如何将对象转换为传递给函数的类型?

    这不会编译 但我想做的只是将对象转换为传递给函数的 t public void My Func Object input Type t t object ab TypeDescriptor GetConverter t ConvertFro
  • 为什么 textarea 不是 input[type="textarea"]?

    为什么有一个元素
  • 如何在一列中存储数组或多个值

    运行 Postgres 7 4 是的 我们正在升级 我需要将 1 到 100 个选定项目存储到数据库的一个字段中 98 的情况下 只会输入 1 个项目 而 2 的情况下 如果是这样的话 会输入多个项目 这些项目只不过是文本描述 截至目前 长
  • Haskell 中的实例声明

    我有这两个功能 primes sieve 2 where sieve p xs p sieve x x lt xs x mod p gt 0 isPrime number number 1 null x x lt takeWhile x g
  • 这个记忆的斐波那契函数是如何工作的?

    在我正在做的函数式编程课程的当前练习作业中 我们必须制作给定函数的记忆版本 为了解释记忆化 给出以下示例 fiblist fibm x x lt 0 fibm 0 0 fibm 1 1 fibm n fiblist n 1 fiblist
  • 如何手动推断表达式的类型

    给定 Haskell 函数 head filter fst 现在的问题是如何手动 手动 找到类型 如果我让 Haskell 告诉我我得到的类型 head filter fst Bool b gt Bool b 但我想了解仅使用所用函数的签名
  • Haskell scala 互操作性

    我是 Scala 初学者 来自面向对象范式 在了解 Scala 的函数式编程部分时 我被引导到 Haskell 纯函数式编程语言 探索 SO 问题答案 我发现 Java Haskell 具有互操作性 我很想知道 Scala Haskell
  • System.Web.HttpException 无法加载类型“[命名空间].???”

    这开始于无法加载类型 全局 错误 在我尝试了一些方法后 没有找到删除 Global asax 文件的位置 现在错误是无法加载类型 namespace 在哪里 是我尝试加载的每个页面的类名 该网站 在 VS2008 本地开发计算机中执行时 工
  • 在 Haskell 中,为什么我必须在这段代码中使用美元符号?

    我仍在尝试破解这段代码 import Data Char groupsOf groupsOf n xs take n xs groupsOf n tail xs problem 8 x maximum map product groupsO
  • 获取参数类型的参数

    假设我定义了一个这样的类型 type Point Tx Ty end 然后我创建一个这种类型的变量 例如 a Point Int64 something 现在 我只知道我可以获得以下类型a by typeof a 那是 Point Int6
  • 如何在 Haskell 中向右或向左移动列表的 1 个元素?

    嗨 我一直在寻找答案 但找不到 假设我们有一个像这样的列表 1 10 4 5 3 我怎样才能将 5 向左移动 使这个列表变成 1 10 5 4 3 我尝试过了swapElementsAt通过找到该元素的索引 但它看起来非常不足 swapEl
  • 搜索重写规则

    有什么办法可以浏览或搜索重写规则吗 当我使用像这样的标志时 ddump rule firings or ddump rule rewrites我只是得到了触发的规则的名称以及它引起的重写 但没有得到实际的规则本身 理想情况下 我想通过 GH
  • Haskell,堆栈:找到可执行文件

    我正在寻找类似的东西 stack whereis hasktags where whereis行为或多或少类似于 UNIXwhereis命令 hasktags是这样运行的 stack exec hasktags stack exec whe
  • 具有上限的联合类型

    我正在遵循这个问题的公认答案中提出的技术如何定义 类型析取 联合类型 https stackoverflow com questions 3508077 does scala have type disjunction union type
  • 二维数组的 MPI 数据类型

    我需要将一个整数数组的数组 基本上是一个二维数组 从根传递给所有处理器 我在 C 程序中使用 MPI 如何声明二维数组的 MPI 数据类型以及如何发送消息 我应该使用广播还是分散 你需要使用播送 http www netlib org ut
  • Traversable 类型类的用途

    有人可以向我解释一下类型类的目的是什么吗Traversable 类型类定义是 class Functor t Foldable t gt Traversable t gt where So Traversable is a Functor
  • 如何使 PyCharm 从函数定义中获取类型提示并在文档字符串中填充类型值?

    我总是在函数定义中使用类型提示 例如 def foo a int b str gt bool pass 当我使用 PyCharm 自动文档字符串生成器在代码中生成文档字符串时 我得到以下信息 def foo a int b str gt b
  • C++ 强制转换运算符重载 [重复]

    这个问题在这里已经有答案了 我有一个只有一个 int 成员的类 例如 class NewInt int data public NewInt int val 0 constructor data val int operator int N

随机推荐

  • Styled-Components:指定父母悬停时孩子的样式

    我有一个简单的组件 这是它的 2 个版本 带和不带样式组件 没有样式组件 div div div div container width 100px height 100px kid width 20px height 20px conta
  • Python:使用多个分割分隔符分割文件

    我有多个 CSV 文件 需要循环解析它们以收集信息 问题是 虽然它们的格式相同 但有些由 t 分隔 另一些则由 分隔 之后 我想删除字符串周围的双引号 python 可以通过多个可能的分隔符进行分割吗 目前 我可以使用以下方法将行拆分为一个
  • jQuery AJAX 没有错误或成功触发

    我有一个简单的联系表格 然后我就可以从中发布 我正在尝试使用 jQuery AJAX 数据 但由于某种原因 我没有收到处理程序的任何响应 这段代码正确吗 document on ready function contactButton on
  • UITableView titleForHeaderInSection 显示全部大写

    我正在使用 titleForHeaderInSection 显示 UITableView 部分的标题 它在 iOS6 SDK 中工作得很好 但 iOS7 SDK 显示的标题全部大写 我猜这是苹果更新的人机界面指南的一部分 那里的所有示例都显
  • Oracle Merge 删除子句其中数据在目标中但不在源中

    尝试从目标表中删除源表中不存在的记录 对象类型 CREATE OR REPLACE type dbo P REC AS OBJECT ATTR1 VARCHAR2 64 BYTE ATTR2 VARCHAR2 128 BYTE ATTR3
  • Tkinter - 如何将实例变量传递给另一个类?

    我用谷歌搜索了很多 但没有成功 上周发布了一个问题 但没有答案 因为似乎太长了 希望新问题更加清晰 这只是一小段代码 如果您运行它 您将能够重现该问题 我基本上需要做的是获取用户输入 来自 mainGUI 类的 E1 并将其传递给数据库类中
  • Firebase 数据库中“加载文档时出错”

    我在尝试访问时遇到错误Database内的菜单项Firebase 控制台 这是一个新的数据库 实际上有几条数据记录 但屏幕一直旋转很长时间 然后返回消息 加载文档时出错 同时我可以访问验证菜单项没有任何问题 Note 我使用的是配备 Cat
  • yii 执行自定义命令时出错

    当我运行自定义时 出现以下错误yiic终端中的命令 我似乎无法找出此错误的原因 任何人都可以指出我正确的方向 我知道数据库工作正常 应用程序的其他部分工作正常
  • 这段简单的代码的复杂性是多少?

    I m pasting this text from an ebook I have It says the complexity if O n2 and also gives an explanation for it but I fai
  • XSLT:没有属​​性且没有子元素的元素转换为父属性

    给定 xml 文件的结构 名称和值未知 对于每个具有简单结构 没有子节点 没有属性 但有文本且不为空 的非根元素 将其转换为父级的属性 我有 xml 文件
  • 房间和可用日期 PHP/MySQL

    因此 我正在设计一个适用于酒店的 Web 应用程序 它最终应该成为通过一些额外代码为每个酒店网站安装的简单方法 该应用程序是使用 php 和 mysql 因此 正如您可能猜到的那样 我对数据库结构非常困惑 不过 我做了一些研究 我不仅仅是要
  • Git clean 被忽略的文件夹

    我有一个文件夹foo包含在 gitignore 中 gitignore this contains foo foo bar 当我跑步时git clean f or git clean f x 这不会删除bar bar是一个普通文件 有没有办
  • boto3.Bucket.upload_file 是阻塞还是非阻塞?

    Is boto3 Bucket upload file http boto3 readthedocs io en latest reference services s3 html S3 Bucket upload file阻塞还是非阻塞
  • 插入多对多关系表

    简单场景 ClientTable ClientId ClientName Phone Age CityTable CityID CityName Country ClientCityTable ClientCityID ClientID C
  • 如何在 html 文本区域中显示以下文本?

    我有一个如下所示的字符串 请看一下 我把它作为图像 这里也不显示 如果我将该字符串放在这里 它就会变成以下内容 21154537878887GHE u0044 u0045 现在我的问题是 有没有办法将原始字符串放入 HTML 中
  • 有什么方法可以从 lme4 mer 模型拟合对象生成 LaTeX 表吗?

    有谁知道如何从 lme4 生成一个好的出版质量的 LaTeX 表mer目的 既没有xtable方法 包xtable 也不latex方法 包Hmisc 知道如何处理mer对象 例如 考虑到这种拟合 library lme4 fm1 lt lm
  • 如何更改 Rails 应用程序数据?

    我看过很多关于 ActiveRecord 迁移以及是否应该使用它们来更改应用程序中的数据的讨论 有些人说是 有些人说不 我的问题是 如果您不使用迁移来执行此操作 那么您使用什么 只是你写的另一个脚本 我正在寻求有关替代方法的建议 以及为什么
  • 观察 Linux 内核中的变量(内存地址)变化,并在变化时打印堆栈跟踪?

    我想以某种方式 监视 Linux 内核 确切地说是内核模块 驱动程序 中的变量 或者内存地址 并找出改变它的原因 基本上 当变量改变时打印出堆栈跟踪 例如 在内核模块中testjiffy hr c列于末尾这个答案 https stackov
  • 如何访问在单独的 Web 应用程序中实现远程接口的 EJB?

    我正在使用 Netbeans 6 8 和 Glassfish v3 0 我创建了一个 ejb 模块并从数据库创建了实体类 然后创建了具有远程接口的无状态会话 bean 比如说 Remote public interface customer
  • 是否可以在 GHCi 中定义新的 ADT

    在评论 ghci 的新功能时 我希望 ghci 能够声明类型声明并声明新的 ADT 类型 有人告知这确实是可能的 经过搜索我发现这一页 https stackoverflow com questions 3093133 how to pro