无法声明 MonadPlus 接口受 Monad 约束

2024-03-10

我试图像这样声明 MonadPlus 接口:

module NanoParsec.Plus

%access public export

interface Monad m => MonadPlus m where
    zero : m a
    plus : m a -> m a -> m a

但有一个错误:

  |
5 | interface Monad m => MonadPlus m where
  |           ~~~~~~~
When checking type of constructor of NanoParsec.Plus.MonadPlus#Monad m:
When checking argument m to type constructor Prelude.Monad.Monad:
        Type mismatch between
                Type (Type of m)
        and
                Type -> Type (Expected type)

我做错了什么?如何解决这个问题? Idris 没有自己的 MonadPlus 接口,我说得对吗?如果是这样,为什么?


在Idris中,定义接口时,参数类型默认为Type, so MonadPlus m这是缩写MonadPlus (m: Type),伊德里斯对待m as a Type。这当然不符合约束条件Monad m,它期望Type -> Type.

如果你想对其他东西进行参数化,你必须明确,比如

interface Monad m => MonadPlus (m: Type -> Type) where
    zero : m a
    plus : m a -> m a -> m a

MonadPlus它本身超出了我的知识范围,所以我不知道它在伊德里斯中是否存在。

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

无法声明 MonadPlus 接口受 Monad 约束 的相关文章

  • 伊德里斯热切评价

    In Haskell 我可能会实施if像这样 if True x y x if False x y y spin 0 spin n spin n 1 This 行为符合我的预期 haskell gt if True spin 1000000
  • 为什么在证明与 Monad 等价时,ArrowApply 是唯一的选择?

    Under 这个问题 https stackoverflow com questions 59869399 why does mutual yielding make arrowapply and monads equivalent unl
  • 一个函数中的两个多态类

    我有状态单子的代码 import Control Monad State data ModelData ModelData String data ClientData ClientData String act String gt Sta
  • 是否有一个 monad 没有相应的 monad 转换器(IO 除外)?

    到目前为止 我遇到的每个 monad 可以表示为一种数据类型 都有一个相应的 monad 转换器 或者可以有一个 是否存在这样一个不可拥有的单子 或者所有的 monad 都有相应的转换器吗 By a 变压器t对应单子m我的意思是t Iden
  • Scala 相当于 Haskell 的 do-notation(再次)

    我知道哈斯克尔的 do x lt 1 2 3 y lt 7 8 9 let z x y return z 在Scala中可以表示为 for x lt List 1 2 3 y lt List 7 8 9 z x y yield z 但是 尤
  • Scala 中的配置数据——我应该使用 Reader monad 吗?

    如何在 Scala 中创建功能正常的可配置对象 我在网上看过托尼 莫里斯的视频Readermonad 和我仍然无法将这些点联系起来 我有一个硬编码的列表Client对象 class Client name String age Int et
  • Writer Monad 是否保证正确的关联连接?

    它被声称在Haskell 中的验证 https stackoverflow com questions 8721609 validations in haskell使用一个Writer保证右关联串联 然而 这个例子似乎表明情况并非如此 正确
  • 函数类型中的 Plus 与 S

    以下向量声明cons cons a gt Vect n a gt Vect n 1 a cons x xs x xs 因错误而失败 Type mismatch between S n and plus n 1 而下面的向量append编译并
  • (xs : Vect n elem) -> Vect (n * 2) elem

    这本书使用 Idris 进行类型驱动开发 https www manning com books type driven development with idris提出这个练习 定义一个适合签名的可能方法 two xs Vect n el
  • Haskell 中的链接/组合类型类

    假设我有两个定义如下的类型类 它们的功能相同但名称不同 class Monad m where gt gt m a gt a gt m b gt m b return a gt m a class PhantomMonad p where
  • 这是C# Monad,问题出在哪里?

    读一上一个问题 https stackoverflow com questions 35951818 why can the monad interface not be declared in java 35959910 35959910
  • 最小纯应用解析器

    我试图找出如何基于一个简单的构建 纯应用解析器 parser http dev stephendiehl com fun 002 parsers html执行 解析器在其实现中不会使用 monad 我之前问过这个问题 但错误地回答了这个问题
  • 使用 State 和 IO 的堆叠 monad 时,在流程中停止理解

    在这个 Scala 示例中 当结果为以下时我需要停止StopNow 我需要在打电话后执行此操作decisionStep 我怎样才能做到这一点 case class BusinessState trait BusinessResult cas
  • MonadFix 用严格的语言

    我正在为 Ocaml 中类似 haskell 的 do 表示法开发 camlp4 扩展 并试图弄清楚 GHC 如何编译递归 do 绑定 使用 XDoRec 启用 我想知道一元定点组合器是否可能以严格的语言存在 如 Ocaml F SML 如
  • 如何在构造微积分中提取Sigma的第二个元素?

    我尝试这样做 A gt B A gt gt t r gt x a gt B x gt r gt r gt t B t A x A gt y B x gt x x A gt y B x gt y 请注意 由于该函数返回的值取决于 sigma
  • 了解filterM

    Consider filterM x gt True False 1 2 3 我只是无法理解 Haskell 对此的魔力filterM用例 该函数的源码如下 filterM Monad m gt a gt m Bool gt a gt m
  • 展平单子栈

    所以我的第一个严肃的 haskell 项目中到处都有这样的代码 f MonadTrans t gt ExceptT t StateT A B C f do mapExceptT lift do lift do lift do r lt re
  • 如何用bind来定义apply?

    在 Haskell 中 Applicatives 被认为比 Functor 更强 这意味着我们可以使用 Applicative 来定义 Functor 例如 Functor fmap a gt b gt f a gt f b fmap f
  • 有没有办法从 IO monad 中解开类型?

    我有这个非常简单的功能 import qualified Data ByteString Lazy as B getJson IO B ByteString getJson B readFile jsonFile readJFile IO
  • 在依赖类型的函数式编程语言中,扁平化列表是否更容易?

    在 haskell 中寻找一个可以展平任意深度嵌套列表的函数时 即应用的函数concat递归并在最后一次迭代时停止 使用非嵌套列表 我注意到这需要有一个更灵活的类型系统 因为随着列表深度的变化 输入类型也会变化 确实 有几个 stackov

随机推荐

  • 将另一个声音添加到 .NET Speech 中

    如何将其他声音添加到 NET Speech 中 我想使用捷克语语音 我找到了一些 sis files Eliska22k sis但我不知道如何使用它 SpeechSynthesizer synth new SpeechSynthesizer
  • Common Lisp 案例和引用元素

    我正在用 CL 编写一个地下城爬行游戏 但在处理案例表单时遇到了问题 两件事情 Common Lisp 抱怨Duplicate keyform QUOTE in CASE statement make instance cl rogue t
  • 如何在 python-flask 中添加自定义字体?

    我尝试过使用 fontface css 样式 但字体没有渲染 还有另一种方法可以使用 python flask 来做到这一点吗 p style font family trial font weight bold Hello p 上面是我的
  • 使 Div 向上滚动时返回到其原始位置

    当您向下和向上滚动时 我有一个带动画的 div 问题是 当我非常快地向上和向下滚动而不让 div 完成其动画时 div 会逐渐从上部屏幕中消失 如果我删除 animate 函数中的 stop 并快速上下滚动 div 会继续执行此操作一段时间
  • 如何在Android Studio上实时查看Sqlite数据库中插入的数据

    你能帮我解决这个问题吗 我正在将值插入到我的 Sqlite 数据库中 如何检查或查看插入的数据 有没有任何工具或其他技术来显示数据 如果您想显示数据Log尝试下面的代码 for Contact cn contacts String log
  • .NET Standard 2.0 无法在 .NET Framework 2.0 中引用

    我收到一个错误 c xxxx csproj 目标为 NETStandard Version v2 0 它无法被面向 NETFramework Version v2 0 的项目引用 WindowsFormsApp1 如何解决 遗憾的是 您无法
  • 用核心运动计算倾斜角

    我的申请有一个记录会话 当用户开始记录会话时 我开始从设备的 CMMotionManager 对象收集数据并将它们存储在 CoreData 上以供稍后处理和呈现 我正在收集的数据包括 GPS 数据 加速度计数据和陀螺仪数据 数据的频率为10
  • 将 webkit 滚动条样式应用于指定元素

    我对以双冒号为前缀的伪元素很陌生 我看到一篇博客文章讨论使用一些仅适用于 webkit 的 css 来设置滚动条的样式 伪元素 CSS 可以应用于单个元素吗 This works by applying style to all scrol
  • 在节点主管中,如何监视目录中的所有内容是否发生更改?

    https github com isaacs node supervisor https github com isaacs node supervisor 我想查看 api 目录及其所有子目录内的所有内容 递归地 我怎样才能做到这一点
  • CouchDB 入门

    我已经在我的 Linux 云服务器上安装了 CouchDB 并且我正在尝试访问 Futon 欢迎屏幕 O Reilly 书中说要转到 127 0 0 1 portnum 但我不在本地主机上工作 它是我的远程服务器 所以我应该能够使用 xxx
  • 使用指定的初始化器初始化数组时出现奇怪的值

    当我初始化下面的数组时 所有输出看起来都正常 除了values 3 因为某些原因values 3 初始化为values 0 values 5 正在输出一个非常大的数字 我的猜测是我正在尝试分配values 0 values 5 在它们被正确
  • Android 中如何获取联系人信息

    我正在开发一个在android平台上编写短信的应用程序 为此 我需要获取 联系人 最近联系人 和 组 请告诉我任何教程或如何执行此操作的代码 当我们单击这三个按钮中的任何一个时 应该会出现联系人以及用于选择多个联系人的复选框 谢谢 这是以编
  • Three.js 如何从向量和常量得到平面?

    在 Three js 中 构造函数数学平面 http threejs org docs api math Plane html需要 2 个输入 法线 Vector3 定义指向原点的平面的法线向量 Constant Float 沿法向量从原点
  • 在 dart angular2 的组件中使用 paper-tabs

    我正在尝试在 dart Angular2 组件中使用聚合物纸标签 但我做不到 下面的代码中我缺少什么 在以下代码中 index html 模板中指定的 paper tabs 工作正常 但 main app html 中的 paper tab
  • 使用 window.crypto.getRandomValues 在 JavaScript 中洗牌扑克牌

    一副扑克牌有 52 张牌 因此52 或大致2 226可能的排列 现在我想完美地洗牌这样一副牌 具有真正随机的结果和均匀的分布 这样你就可以达到这些可能的排列中的每一个 并且每个排列出现的可能性相同 为什么这实际上是必要的 对于游戏来说 也许
  • 如何在 Sanity.io 中的输入组件内检索引用字段数据?

    在 Sanity Studio 中 我试图获取输入组件内的所有文档属性 关注这篇文章官方支持的获取文档内容的方式 https github com sanity io sanity issues 417 issuecomment 35551
  • 如何使用 Google Apps 脚本和 Discord Webhook 将图像上传到 Discord?

    我编写了以下脚本 function uploadImageToDiscord var link https i imgur com image jpg var img UrlFetchApp fetch link getBlob var d
  • 添加带有动态生成的 editText 的删除选项

    我是 android 新手 我在单击添加新按钮时使用以下代码动态创建了 editText 是否可以在 editText 附近添加一个删除按钮 以便每次单击删除时相应的 editText 都会被删除 btnAddNew setOnClickL
  • AWS SDK for Java 是否通过安全通道与 S3 服务器进行通信?

    我想这是一个很大的 是 但我更喜欢在假设之前先问一下 那么 您知道当我从 S3 存储桶下载文件 向 S3 存储桶上传文件时 AWS SDK for Java 是否始终使用安全通道 或者这是我在编写代码或 S3 存储桶本身时应该配置的内容 A
  • 无法声明 MonadPlus 接口受 Monad 约束

    我试图像这样声明 MonadPlus 接口 module NanoParsec Plus access public export interface Monad m gt MonadPlus m where zero m a plus m