持久 selectList 导致错误“无法将类型‘BaseBackend backend0’与‘SqlBackend’匹配”

2024-05-12

我遇到以下编译错误:

• Couldn't match type ‘BaseBackend backend0’ with ‘SqlBackend’
    arising from a use of ‘runSqlite’
  The type variable ‘backend0’ is ambiguous
• In the expression: runSqlite ":memory:"
  In the expression:
    runSqlite ":memory:"
    $ do { records <- selectList [UserUsername ==. "abc"] [LimitTo 10];
           liftIO $ print (records :: [Entity User]) }
  In an equation for ‘selectAll’:
      selectAll
        = runSqlite ":memory:"
          $ do { records <- selectList [UserUsername ==. "abc"] [LimitTo 10];
                 liftIO $ print (records :: [Entity User]) }

Code:

selectAll :: IO ()
selectAll = runSqlite ":memory:" $ do
  records <- selectList [UserUsername ==. "abc"] [LimitTo 10]
  liftIO $ print (records :: [Entity User])

看一下 runSqlite 的类型签名:

runSqlite    
:: (MonadBaseControl IO m, MonadIO m, IsSqlBackend backend)  
=> Text 
-> ReaderT backend (NoLoggingT (ResourceT m)) a 
-> m a

我假设我需要为 runSqlite 指定一个显式类型,尽管我不太确定我设置的是什么backend in ReaderT backend (NoLoggingT (ResourceT m)) a?


您可以专注于SqlBackend.

asSqlBackendReader :: ReaderT SqlBackend m a -> ReaderT SqlBackend m a
asSqlBackendReader = id

selectAll :: IO ()
selectAll = runSqlite ":memory:" . asSqlBackendReader $ do
  records <- selectList [UserUsername ==. "abc"] [LimitTo 10]
  liftIO $ print (records :: [Entity User])

看看类型runSqlite,有一个IsSqlBackend backend需要满足的约束。

的定义IsSqlBackend https://hackage.haskell.org/package/persistent-2.7.0/docs/Database-Persist-Sql.html#t:IsSqlBackend is:

type IsSqlBackend backend =
  (IsPersistBackend backend, BaseBackend backend ~ SqlBackend)

然后抬头看IsPersistBackend https://hackage.haskell.org/package/persistent-2.7.0/docs/Database-Persist-Class.html#t:IsPersistBackend.

在类的定义下面,我们看到它有三个实例:

instance IsPersistBackend SqlWriteBackend
instance IsPersistBackend SqlReadBackend
instance IsPersistBackend SqlBackend

这三种类型指定具有不同功能的后端,其中SqlBackend是最通用的一种(未知功能)。如果您只需要这样,请随意使用限制更严格的。

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

持久 selectList 导致错误“无法将类型‘BaseBackend backend0’与‘SqlBackend’匹配” 的相关文章

  • 如何在 Haskell Pipes 中将两个 Consumer 合并为一个?

    我使用Haskell流处理库pipes https hackage haskell org package pipes编写一个命令行工具 每个命令行操作都可以将结果输出到stdout并记录到stderr with pipes API I n
  • Haskell 中的所有内容都存储在 thunk 中吗,甚至是简单的值?

    以下值 表达式 函数的 thunk 在 Haskell 堆中是什么样子的 val 5 is val a pointer to a box containing 5 add x y x y result add 2 val main prin
  • 管道 - 将多个来源/生产者合并为一个

    我正在使用读取文件sourceFile 但我还需要在处理操作中引入随机性 我认为最好的方法是拥有一个这样的制片人 Producer m StdGen ByteString 其中 StdGen 用于生成随机数 我打算让生产者执行 source
  • Haskell 中多核编程的现状如何?

    Haskell 中多核编程的现状如何 现在有哪些项目 工具和库可用 有哪些经验报道 2009年至2012年期间 发生了以下事件 2012 从 2012 年开始 并行 Haskell 状态更新开始出现在并行 Haskell 摘要 http w
  • Haskell / cabal 包的解决方法受到 Nix 和 Cabal 的限制?

    我最近开始开发反射平台 https github com reflex frp reflex platform 有一些额外的配置类似于优秀的反射项目骨架 https github com ElvishJerricco reflex proj
  • 这是 unsafeCoerce 的安全使用吗?

    我遇到的情况是 我目前正在使用极其可怕的函数 unsafeCoerce 幸运的是 这并不是为了任何重要的事情 但我想知道这是否是该函数的安全使用 或者是否有其他方法可以解决其他人知道的这个特定问题 我的代码类似于以下内容 data Toke
  • 如何让 esqueleto 为我生成 SQL 字符串?

    我怎样才能让esqueleto从a生成一个SQL字符串from陈述 的文档toRawSql说 你可以打开持久的查询日志记录 我尝试了所有可能的形式MonadLogger我可以理解 但它从未打印任何 SQL 同一文档还说 手动使用此功能 是可
  • Haskell Cabal:“包间接依赖于同一包的多个版本”

    清除我的所有后cabal installed 包 我运行了以下会话 cabal update Downloading the latest package list from hackage haskell org james bast c
  • Haskell 为替代的 Either 数据类型定义 Functor 实例

    通过 Typeclassopedia 获得一些使用类型类的路由 想要替代Either的一个实例Functor 但即使检查定义Either作为一个例子Functor总是给我带来麻烦 有这个 但不会编译 data Alt a b Success
  • 函数式语言与语言实现的角度有何不同

    出现了全新的 函数式编程 范式 与过程式编程相比 它需要彻底改变思维模式 它使用高阶函数 纯度 单子等 我们通常在命令式和面向对象语言中不会看到这些 我的问题是如何执行这些语言与命令式或面向对象语言的不同之处在于 例如内存管理或指针等内部结
  • 承诺的反面是什么?

    承诺代表将来可能可用 或无法实现 的值 我正在寻找的是一种数据类型 它表示将来可能变得不可用的可用值 可能是由于错误 Promise a b TransitionFromTo
  • monadicIO 的工作原理

    我有以下代码 fastShuffle a gt IO a fastShuffle a
  • 不理解 Monoid 定义中态射的表示法

    我试图理解什么Monoid是从范畴论的角度来看的 但我对用来描述它的符号有点困惑 这是维基百科 在范畴论中 幺半群范畴 C I 中的幺半群 或幺半群对象 M 是一个对象 M 和两个态射 M M M 称为乘法 I M 称为单位 我的困惑在于态
  • 带有参考的 Haskell 数据类型

    我正在实现 Ukkonen 的算法 该算法要求树的所有叶子都包含对同一整数的引用 并且我在 Haskell 中执行此操作是为了了解有关该语言的更多信息 但是 我很难编写出执行此操作的数据类型 Node has children indexe
  • 将List中的相邻元素放入元组中

    给定一个元素列表 xs a b c d z where a b c等是任意值的占位符 我想实现一个功能adjacents a gt a a 产生 adjacentValues a b b c c d y z 在 Haskell 中 递归定义
  • 如何在Haskell中定义一个允许统一访问不同记录的类?

    我有两条记录 它们都有一个我想要提取以显示的字段 我如何安排事物以便可以使用相同的功能来操纵它们 由于它们有不同的字段 在本例中firstName and buildingName 这是它们的名称字段 它们每个都需要一些 适配器 代码来映射
  • 在没有互联网连接的情况下使用 cabal 安装 Haskell 软件包

    我有一台根本无法访问互联网的机器 我使用通过随身碟从另一台机器获得的安装程序在其上安装了 Haskell 平台 现在我想安装这个包repa在我的家用机器上 无法访问互联网 我该怎么做呢 我的家用计算机运行的是 Linux Debian 我的
  • 运行程序的最佳 Haskell 库是什么? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 如果我要将一个程序投入生产 我需要该程序做几件事才能将其视为 可操作 也就是说 工程师和操作人员以可测量
  • Haskell 中动态规划的高效表

    我已经编码了0 1背包问题 http en wikipedia org wiki Knapsack problem 0 1 knapsack problem在哈斯克尔 我对迄今为止所取得的懒惰和普遍性水平感到相当自豪 我首先提供用于创建和处
  • 如何在递归方案中派生实例

    我正在测试其中的一些想法本文 http blog sumtypeofway com an introduction to recursion schemes 我想派生 Term 类型的 Eq 实例 LANGUAGE DeriveFuncto

随机推荐

  • 如何在 R 中绘制预测的子集?

    我有一个简单的 R 脚本来根据文件创建预测 自 2014 年以来就有数据记录 但我在尝试实现以下两个目标时遇到了困难 仅绘制预测信息的子集 从 11 2017 开始 以特定格式包含月份和年份 即 6 月 17 日 这是链接到dataset
  • 如何在 IIS 8 中远程停止/启动应用程序池

    注意 每条线使用一行 我在 IIS 6 中使用了这些命令 它们工作得很好 Start get wmiobject namespace root MicrosoftIISv2 computername REMOTE SERVER class
  • 如何在 Windows Phone 8 中安装 .xap PhoneGap 版本?

    我使用phonegap android开发了一款简单的游戏 但在为Windows iOS Android 黑莓等构建后 它仅适用于Android设备 因此我可以为Android设备安装apk文件 但在Windows xap文件中未检测到Wi
  • 如果我使用单例,在哪里关闭 SQLiteOpenHelper

    我有以下课程允许用户获得SQLiteOpenHelper object import android content Context public class DBUtils private DBUtils private static D
  • RabbitMQ:如何创建和恢复备份

    我是 RabbitMQ 的新手 我需要一些帮助 如何备份和恢复到RabbitMQ 以及我需要保存哪些重要数据 谢谢 如果您安装了管理插件 您可以在Overview页 在底部你会看到导入 导出定义您可以使用它来下载代理的 JSON 表示形式
  • 如何以编程方式找出我的 PermGen 空间使用情况?

    我正在尝试诊断java lang OutOfMemoryError PermGen Space在 Sun 的 Hotspot JVM 上运行时出现错误 并且想知道我的程序在不同时刻使用了多少 PermGen 空间 有没有办法以编程方式找出这
  • 从另一个 Android 应用程序打开 Instagram 应用程序并发送带有标题的图像

    我基本上寻找的是从另一个应用程序打开 Instagram 应用程序并发送带有标题的图像 有一些有用的文档可以在 iOS 中执行此操作 iPhone 挂钩 https instagram com developer mobile sharin
  • 从字符串将 AM/PM 设置为时间选择器对话框?

    我有一个 TextView 其中时间以格式显示10 00 PM当用户单击该视图时 必须将相同的时间设置为TimePicker对话 我能够设置Hour and Minutes到选取器 但在AM PM部分 我总是得到AM用户是否已设置AM or
  • 出现导入错误:在创建虚拟环境期间无法导入名称 HTTPSHandler

    我有一个 Raspberry Pi 通过执行以下操作将其升级到 Python 3 3 3 sudo apt get install build essential libsqlite3 dev sqlite3 bzip2 libbz2 de
  • 音频标签的 Html5 惰性“onplay”事件处理程序?

    使用新的 Html5 音频标签 onplay 事件似乎仅在第一次播放音频时触发 在此示例中 当单击 播放 时 音频将开始并显示一个显示 正在播放 的警报弹出窗口 当音频结束并再次单击 播放 时 音频会再次开始 但不会触发警报 我在这里错过了
  • ClearCase 远程客户端 CLI?

    我在目前的工作中正在努力使用 ClearCase 考虑到我们去年使用的是 CVS 这真的很痛苦 我正在尝试创建一个构建服务器 从 ClearCase 下载代码 编译它并生成所有发行版 构建服务器必须是 RHEL5 而 ClearCase 服
  • iOS中拖动时如何修改UIVisualEffectView的模糊度?

    目前 我正在使用 UIVisualEffectView 对图像应用模糊 我有一个 UIScrollView 当我在 scrollViewDidScroll 方法中向下拉滚动视图时 我正在更改 UIVisualEffectView 的 alp
  • 如何用Java写入OS系统日志?

    Mac OS 有一个名为 Console 的应用程序 其中包含记录的消息 错误和故障 我相信 Windows 中的等效项是事件查看器 我想 Linux 上也有一个 但我不知道它是什么 也不知道它在哪里 是否可以像这样从 Java 输出获取消
  • C++ 多态加载/保存

    我正在保存并重新加载一堆从公共基础派生的不同对象到一个文件 显然我需要存储类名 或类似的名称 以便在重新加载时创建正确的对象类型 保存很简单 class Base virtual string className const 0 void
  • 双击 TreeNode 复选框上的行为

    我有一个TreeView填充有TreeNodes有图标和复选框 我一直在尝试禁用其中一些人的检查 取消检查能力 从而丢弃事件中的事件BerforeCheck方法 这工作正常 直到我双击复选框 复选框的图像与其真实状态相反 如果状态为Chec
  • 与查询参数一起使用时,Ember .observe() 返回两次回调

    http jsbin com vowup 2 http jsbin com vowup 2 如果我单击更改为随机 程序将登录控制台两次 由于某些奇怪的原因 将修订变量设置为字符串时它可以正常工作 但对于数字或任何其他类型的变量会记录两次 将
  • R CMD 检查警告:在文档对象中使用的函数/方法...但不在代码中

    我正在写一个包 但一个持久的R CMD check警告阻止我完成包裹并将其发布到 CRAN 我用roxygen2对于内联文档 尽管这可能不是错误的根本原因 如果您知道如何删除此警告 我很可能可以找到一种方法来使用roxygen2 如何删除警
  • 在 Windows 7 - 64 位上安装 Mongodb

    我是 mongodb 的新手 不知道如何安装它 因为我找不到视频或任何有用的资源来实现相同的目的 请帮助我在 Windows 7 上安装 mongodb 并提供确切的步骤 我尝试从该网站下载最新版本的 mongodb 但不成功 提前致谢 R
  • 非静态字段、方法或属性需要对象引用

    我知道人们以前问过这个问题 但场景太具体 我对基本原理感到困惑 我有两个基本版本的 C 程序 一种有效 一种无效 如果有人能解释为什么我收到错误 我会很高兴非静态字段 方法或属性需要对象引用在第二个程序中 Works namespace E
  • 持久 selectList 导致错误“无法将类型‘BaseBackend backend0’与‘SqlBackend’匹配”

    我遇到以下编译错误 Couldn t match type BaseBackend backend0 with SqlBackend arising from a use of runSqlite The type variable bac