Haskell 约束不小于实例头

2024-07-04

有些戒指可以配备标准功能:

class (Ring.C a) => EuclideanDomain a where
  norm :: a -> Integer

使用此功能,可以通过明显的方式订购戒指:

compare x y = compare (norm x) (norm y)

但我不确定如何表明这一点。我尝试做

instance (EuclideanDomain a, Eq a) => Ord a where

但这给了我一些警告,当我启用相关的编译器标志时,它告诉我“约束不小于实例头” - 如果我启用 UndecidableInstances 一切都会陷入困境。

有办法做我想做的事吗?


哈马尔已经提供了解决方案;我想指出这个例子的另一个问题。你想要表达的是“每当一个类型是一个实例Eq and EuclideanDomain,使用这个规则来创建一个实例Ord” 但这在 Haskell 中是无法表达的。这一行

instance (EuclideanDomain a, Eq a) => Ord a where

实际上的意思是,“使用这个规则来制作一个Ord任何类型的实例。如果实例是错误的EuclideanDomain and Eq不在范围内”。这不好,因为此规则将与所有其他 Ord 实例重叠。

基本上任何时候你想写一个实例Class typevar,你将需要一个新类型。

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

Haskell 约束不小于实例头 的相关文章

  • 系统地将函数应用于 haskell 记录的所有字段

    我有一条包含不同类型字段的记录 以及一个适用于所有这些类型的函数 举一个小 愚蠢 的例子 data Rec Rec flnum Float intnum Int deriving Show 比如说 我想定义一个为每个字段添加两条记录的函数
  • 如何在 Haskell 中创建异构列表? (最初是Java)

    如何将以下 Java 实现转换为 Haskell 这里的主要目的是拥有一个包含作为特定接口的子类型的各种元素的列表 我尝试制作下面的 Haskell 版本 但未能达到我的目的 这里的重点是xs有类型 Bar 而不是Foo a gt a 这是
  • Haskell 中是否可以部分应用第 n 个参数?

    我很好奇是否可以写一个函数apply nth它接受一个函数 参数的数量以及该参数的值 然后返回一个新的 部分应用的函数 我的感觉是 由于类型系统的原因 这是不可能的 但我无法给出令人满意的答案 我也无法提出工作类型签名 如果语言的类型更加松
  • 无法让 wxHaskell 在 Mac 上从 ghci 工作

    我正在尝试跑步一个例子 http www haskell org haskellwiki WxHaskell Quick start Hello world in wxHaskell using EnableGUI function htt
  • 优化计算 200 万以下所有素数总和的 Haskell 代码

    欧拉计划中的问题 10 我在那里看到了一些讨论 但仅限于 C 我用下面的代码来计算 print sum sieve 2 2000000 where sieve sieve x xs x sieve filter 0 mod x xs 需要很
  • 追踪 Haskell 中的错误

    我如何获得有关 Haskell 错误发生位置的更多信息 例如 昨天我正在开发一个 Haskell 程序 该程序解析输入文件 转换数据 然后打印出报告信息 有一次 我跑了 main 然后回来了 Prelude read parse error
  • 使用 Haskell 识别段落中的单词数

    我是 Haskell 和函数式编程的新手 我有一个 txt包含一些段落的文件 我想使用 Haskell 计算每个段落中的单词数 我已经写了输入 输出代码 paragraph words String gt int no of words I
  • Haskell 中将函数与类型关联起来

    假设您有一个序列化器 反序列化器类型类 class SerDes a where ser a gt ByteString des ByteString gt a 事实证明 为每种类型提供一个特殊的辅助函数至关重要a e g compress
  • 如何构图“也许”镜头?

    如果我有嵌套记录的镜头 其中每个镜头返回一个Maybe 我怎样才能让它们组合起来 这样如果 遍历 中有任何东西返回一个Nothing最终结果是Nothing data Client Client clientProperties Maybe
  • 如何向http-client-tls提供客户端证书?

    我在用http 客户端 tls http hackage haskell org package http client tls 0 2 1 2连接到需要客户端证书的启用 TLS 的服务器 我怀疑我需要调整TLS设置 http hackag
  • 简化布尔表达式的函数

    我正在处理以下语法 我已经以 Haskell 的形式实现了data type bool tt ff bool bool var var letter letter digit 我的问题是 我想写一个函数simplify bool bool它
  • 最小 Warp 网络服务器示例

    我想使用创建一个网站Warp https hackage haskell org package warpHaskell 中的网络服务器 由于我是 Haskell 初学者 例如this one https langnostic blogsp
  • Haskell - 计算列表中每个不同元素出现的次数

    我是 Haskell 的新手 只是想编写一个列表理解来计算列表中每个不同值的频率 但我在最后一部分遇到了麻烦 到目前为止我有这个 frequency Eq a gt a gt Int a frequency list count y lis
  • 如何创建两个调用此外部库 API 的 ByteString?

    我目前正在编写与加密库的绑定 该库公开用于生成密钥对的函数 const size t PUBLICKEYBYTES 32 const size t SECRETKEYBYTES 32 int random keypair unsigned
  • 将列表拆分为可能的元组列表

    我需要将列表拆分为所有可能元组的列表 但我不确定如何执行此操作 例如 pairs cat dog mouse 应该导致 cat dog cat mouse dog cat dog mouse mouse cat mouse dog 我能够形
  • 更新列表的第 'x' 个元素 - Haskell [重复]

    这个问题在这里已经有答案了 可能的重复 替换 Haskell 中的单个列表元素 https stackoverflow com questions 5852722 replace individual list elements in ha
  • 我在哪里可以学习高级 Haskell? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在评论中我的答案之一 https stackoverflow com questions 4633584 algorithm to gen
  • Haskell Stack 构建特定的可执行文件

    如何构建特定的堆栈可执行文件 即 那些指定的projectname cabal like executable executable name hs source dirs tools main is ExecutableModule hs
  • “约束不小于实例头”是什么意思以及如何解决

    我想写一些类似的东西 LANGUAGE FlexibleContexts FlexibleInstances import Data ByteString Char8 ByteString pack import Data Foldable
  • Haskell 约束不小于实例头

    有些戒指可以配备标准功能 class Ring C a gt EuclideanDomain a where norm a gt Integer 使用此功能 可以通过明显的方式订购戒指 compare x y compare norm x

随机推荐

  • 为什么TEdit只显示长度等于或小于37440个字符的文本?

    如果你这样做 Edit1 Text StringOfChar X 37440 它将显示文本 但是如果您这样做 Edit1 Text StringOfChar X 37441 文本将不会出现 有人知道为什么吗 如果这是一个错误 除了将所有现有
  • 如何测试为 SKProductsRequest 设置不同的区域设置

    我正在 iPhone 应用程序中实现 IAP 并在沙盒环境中工作 我有我的代码设置要处理SKProducts由返回SKProductsRequest获取定价信息 我想测试检索不同区域设置中的价格值 例如欧元或日元 以测试我的格式化代码 我怎
  • React Native 应用程序的发布版本中的图像映射错误

    我在用着require image xx png 来传递
  • EncdDecd 到 DecodeBase64 有限制吗?

    您可以传入的 Base64 字符串的大小是否有限制 我正在使用以下内容 当创建我的图像时 它缺少底部的一部分 我看到 BufferLen 约为 44000 但 DecodeBase64 返回大约包含 24000 个项目的数组 BufferL
  • maven-failsafe-plugin 错误并构建成功?

    我的问题与此非常相似 maven failsafe plugin 失败并构建成功 https stackoverflow com questions 12279160 maven failsafe plugin failures and b
  • Android Studio:Imageview 背景在比图像更大的最小尺寸上模糊

    在 Android Studio 中 我正在使用 Imageviews 并使用相对较小的图像 10x16px 来获得较大的图像视图 100 像素 就像任何人都会做的那样 我根据需要设置图像视图的最小高度 宽度 Imageview setMi
  • SocketIO Chrome 检查器框架

    我正在使用 Socket IO 在 chrome 检查器中查看帧时遇到了一些问题 每帧内容旁边的数字是什么意思 这就是 Engine io 协议 其中您看到的数字是数据包编码
  • Hibernate 5. 生成 SQL DDL 到文件中

    我尝试使用这个类 Hibernate JPA 在更新 DB 架构之前检查生成的 sql 如 NET EF 迁移 https stackoverflow com questions 30833260 hibernate jpa check g
  • 除了Azure Portal之外,还有查看Application Insights日志的方法吗?

    我无法忍受在 Azure 门户中多次单击来访问 AppInsights 日志分析 将 URL 保存到分析刀片并返回到它也经常无法加载页面 因为似乎存在一些身份验证令牌过期问题 如何在不使用 Azure 门户的情况下在 AppInsights
  • Eslint:无重复解决错误:无法加载解析器“节点”

    我今天刚刚更新了我的项目 带有 VueJS 和 Quasar Framework 的 SPA npm update我现在无法运行它 我收到错误no duplicates Resolve error unable to load resolv
  • Android SKIA 图像解码

    HI 我目前正在研究Android如何解码和图像文件 当我检查代码时 它似乎正在调用 SKIA 库 但是 我如何根据源代码知道android skia支持哪些图像文件格式呢 我不是编程专家 所以我仍在尝试了解C 和Java语言 我现在迷失在
  • MVC_layout页面中脚本放置的位置

    您好 通过阅读本网站上的建议 我了解到脚本应位于 layout 页面的底部 我的问题是我不确定 底部 到底在哪里 有些人说它就在标签之前 但这对我不起作用 我尝试过将脚本放在很多地方 但似乎没有地方起作用 有人可以告诉我我做错了什么吗 这是
  • Decimal 存储 C# 中解析字符串的精度?有什么影响?

    在 IRC 的一次对话中 有人指出了以下几点 decimal Parse 1 0000 ToString 1 0000 decimal Parse 1 00 ToString 1 00 如何 为什么decimal类型像这样保留精度 或者更确
  • 复合主键:好还是坏?

    虽然可以使用复合主键 但是对于下面的情况 这真的是一种不好的做法吗 Stackoverflow 上的共识在这个问题上似乎是双向的 Why 我想将订单付款存储在单独的表中 原因是 一个订单可以有许多项目 这些项目以多对多关系的形式在单独的表中
  • 在 C 中打印 Unicode 符号

    我正在尝试打印 unicode 星号字符 0x2605 http www fileformat info info unicode char 2605 index htm 在使用 C 的 Linux 终端中 我遵循了网站上其他答案建议的语法
  • 如何获取谷歌地图 v2 api 密钥以进行团队合作

    抱歉我的英语不好 我的 google 地图 api v2 密钥有问题 我和我的团队一起工作 我们的项目 android 项目 只需要一个 api 密钥 有可能吗 或者我团队的所有成员都必须生成 api 密钥才能运行 google 地图 您可
  • 无法在 python 中获取当前 url

    我创建了一个类和方法 如下所示 我需要获取当前页面的网址 但在调用 get full path 时出现错误 class A object def get user request current url request get full p
  • python statsmodels:帮助使用 ARIMA 模型进行时间序列

    statsmodels 的 ARIMA 为我的输出提供了不准确的答案 我想知道是否有人可以帮助我理解我的代码有什么问题 这是一个示例 import pandas as pd import numpy as np import datetim
  • 在 git Push 上硬重置

    我有一个接收后挂钩脚本位于我正在推送的远程存储库上 该脚本执行以下操作git reset hard 像这样的东西 git push opal Counting objects 74 done Delta compression using
  • Haskell 约束不小于实例头

    有些戒指可以配备标准功能 class Ring C a gt EuclideanDomain a where norm a gt Integer 使用此功能 可以通过明显的方式订购戒指 compare x y compare norm x