重载函数签名 haskell

2024-01-11

当我编译时,我收到以下错误消息:

重复的类型签名:
WeightedMedian.hs:71:0-39: findVal :: [ValPair] -> 双 -> 双
WeightedMedian.hs:68:0-36: findVal :: [ValPair] -> Int -> Double

我的解决方案是使用 findValI 和 findValD。然而,findValI 只是将 Int 类型转换为 Double 并调用 findValD。

另外,我无法对 Num (Int, Double) 类型进行模式匹配,因此我不能将类型签名更改为

findVal :: [ValPair] -> Num -> Double   

在许多语言中,我不需要不同的名称。为什么我在 Haskell 中需要不同的名称?这很难添加到语言中吗?或者那里有龙吗?


Haskell 中通过类型类提供临时多态性(和名称重载):

class CanFindVal a where
          findVal :: [ValPair] -> a -> Double

instance CanFindVal Double where
     findVal xs d = ...

instance CanFindVal Int where
     findVal xs d = findVal xs (fromIntegral d :: Double)

请注意,在这种情况下,因为findVal“真的”需要一个Double,我总是让它采用双精度,当我需要传递一个 int 时,只需使用fromIntegral在呼叫站点。当实际上涉及不同的行为或逻辑时,而不是混杂地,您通常需要类型类。

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

重载函数签名 haskell 的相关文章

  • 如何为强制长度为 2^n 的向量类型定义可用的 Applicative 实例

    对于某些应用程序 我需要长度为 2 n 的向量 为了强制某些操作的长度匹配 我使用 ist 应用实例定义了我的类型 如下所示 LANGUAGE GADTs DataKinds FlexibleInstances FlexibleContex
  • 如何让 Show 显示函数名称?

    作为一个让我熟悉 Haskell 的简单练习 在 Youtube 上闲逛并偶然进入美国倒计时游戏节目之后 我想为数字游戏制作一个求解器 你得到 6 个数字 需要将它们与 为了得到给定的结果 到目前为止我所得到的是非常脑死亡的 let ope
  • 在 Haskell 中,为什么我必须在这段代码中使用美元符号?

    我仍在尝试破解这段代码 import Data Char groupsOf groupsOf n xs take n xs groupsOf n tail xs problem 8 x maximum map product groupsO
  • 搜索重写规则

    有什么办法可以浏览或搜索重写规则吗 当我使用像这样的标志时 ddump rule firings or ddump rule rewrites我只是得到了触发的规则的名称以及它引起的重写 但没有得到实际的规则本身 理想情况下 我想通过 GH
  • 将 num 的签名键入 double?

    我才刚刚开始为你学习 Haskell 以获得伟大的好处 并且我在类型类方面遇到了一些麻烦 我想创建一个接受任何数字类型并强制其为双精度的函数 我的第一个想法是定义 numToDouble Num gt Double 但我认为这不起作用 因为
  • 将两个 Int 值相除以获得 Float 的正确方法是什么?

    我想分两份IntHaskell 中的值并获得结果Float 我尝试这样做 foo Int gt Int gt Float foo a b fromRational a b 但 GHC 版本 6 12 1 告诉我 无法将预期类型 Intege
  • Haskell 中的分类结构

    Hask通常被认为是一个范畴 其对象是类型 态射是函数 然而 我看到 Conor McBride pigworker 警告不要使用Hask多次 1 https stackoverflow com a 45905082 474311 2 ht
  • 以下两个 lambda 函数的空间复杂度

    我正在阅读以下内容 https en wikibooks org wiki Haskell Graph reduction https en wikibooks org wiki Haskell Graph reduction 其内容如下
  • 如何在 Haskell 中制作打勾游戏的图案?

    实现有 2 个参数的函数 ticktick 第一个参数是自然数元组 定义游戏场地的行数和列数 第二个列表包含由玩家 x 和玩家 o 轮流玩的坐标给出的井字游戏比赛的记录 打印游戏的实际状态 其中游戏区域将由字符 和 界定 空方块 以及字符
  • Haskell / GHC - 是否有“警告不完整模式”的中缀标签/编译指示

    我正在寻找一个可以对特定的不完整模式发出警告的编译指示 它会使编译器失败并显示以下 假设的 代码 FAILIF incomplete patterns f Int gt Int f 0 0 我正在尝试使用 Arrows 编写一个 编译器 并
  • 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
  • 你能识别 Haskell 程序中的无限列表吗? [复制]

    这个问题在这里已经有答案了 可能的重复 如何判断列表是否是无限的 https stackoverflow com questions 7371730 how to tell if a list is infinite 在Haskell中 你
  • 找不到模块“Yesod”

    我有以下代码 LANGUAGE TypeFamilies QuasiQuotes MultiParamTypeClasses TemplateHaskell OverloadedStrings module Simple where imp
  • 这个对自身单位的列表理解是如何工作的?

    在 haskell IRC 频道中有人问 是否有一种简洁的方法来定义一个列表 其中第 n 个条目是之前所有条目的平方和 我认为这听起来像一个有趣的谜题 递归定义无限列表是我真正需要练习的事情之一 所以我启动了 GHCi 并开始尝试递归定义
  • 如何在不声明新数据的情况下更改类型(String,Int)元组的 Ord 实例?

    我正在尝试对类型列表进行排序 String Int 默认情况下 它按字符串排序 然后按整数排序 如果字符串相等 我希望它是相反的 首先比较整数 然后如果相等则比较字符串 另外 我不想切换到 Int String 我找到了一种通过定义实例来实
  • Haskell Data.Decimal 作为 Aeson 类型

    是否可以解析一个数据 十进制 https hackage haskell org package Decimal 0 4 2 docs Data Decimal html使用 Aeson 包从 JSON 获取 假设我有以下 JSON foo
  • RankN多态性和令人发指的克莱斯利之箭

    我不明白为什么 demobind1 的定义会产生一些编译器错误 它看起来像一个愚蠢的翻转 但不知何故 LANGUAGE GADTs LANGUAGE RankNTypes ScopedTypeVariables TypeOperators
  • 使用带有两个列表而不是一个列表的地图。可以筑巢吗?

    我需要多次运行一个带有两个参数的函数 我有两个包含这些参数的列表 我希望能够使用map或类似的东西用相应的参数调用函数 我要调用的函数具有以下类型 runParseTest String gt String gt IO 列表的创建方式如下
  • 树莓派 2 上的 GHCi?

    我正在开发一些在 raspberry pi 2 上运行的 haskell 项目 以及可以使用 raspbian 7 4 1 中的 apt get 安装的 ghc 版本 但它没有 GHCi 这会阻止一些重要的包 如 Vector 的编译 我看

随机推荐

  • CMake:带有单元测试的项目结构

    我正在尝试构建我的项目以包含生产源 在src子文件夹 和测试 在test子文件夹 我正在使用 CMake 来构建它 作为一个最小的例子 我有以下文件 CMakeLists txt cmake minimum required VERSION
  • Facebook 粉丝页面选项卡“评论”:通过 API 发布?

    我在 Facebook 上有一个很棒的粉丝页面 我的公司用它来与客户保持联系 现在 我知道如何通过 Graph API 发布到墙上并做一些其他事情 我想知道我是否可以发布到Reviews区域墙 你明白我的意思吗 就在个人资料图片下方 有一个
  • Python Tkinter Treeview - 迭代“get_children”输出

    我稍后尝试迭代树视图内的数据 然后我希望能够解决它 from tkinter import from tkinter ttk import import pickle root Tk def treeData event children
  • 在打开弹出菜单的视图内显示三角形(就像使用微调器一样)

    我有一个ListView它通过显示一个来处理 onClick 事件PopUpMenu 但是 我希望用户看到视图内可以单击的小三角形 我尝试使用Spinner 因为该元素看起来像我想要的 但我无法设置该元素的标题Spinner除其选项之外的任
  • 如何从 jetpack compose 更改 OutlinedTextField 的轮廓颜色?

    以下是 jetpack compose 中 OutlinedTextField 代码的样子 OutlinedTextField value onValueChange label Text Input 此 TextField 轮廓的默认颜色
  • 使用 Octave 绘图时出现问题

    我刚刚开始使用 Octave 当我启动八度并尝试绘制某些内容时 绘图有效 但我多次重复收到以下警告 warning ft render unable to load appropriate font warning ft render in
  • gitolite:通道 0 上的 PTY 分配请求失败

    jenkins ci 服务器 和我的 git 存储库都托管在同一台服务器上 git repo 由 gitolite 控制 如果我从外部访问存储库 例如从我的工作站 我会得到 ssh git arrakis PTY allocation re
  • 用于发送短信的 AT 命令在 Windows 8.1 中不起作用

    我已经研究了两天多了 试图制作一个使用 AT 命令发送短信的应用程序 我实现了一些网络上可用的教程和项目 不幸的是 它们都不起作用 https docs google com document d 1VfBbMcKZsutP8Cwg2iu7
  • OpenGL 闪烁像素伪影

    我正在尝试在基于体素的网格上实现环境光遮挡 并在面部边缘获得这些闪烁的白色像素 这是我的片段着色器 version 120 varying vec4 color varying vec4 normal void main void floa
  • 没有使用python requests模块获取所有cookie信息

    我正在学习如何使用 python requests 模块登录示例网站 这视频教程 https www youtube com watch v eRSJSKG4mDA让我开始了 从我在 Google Chrome gt Inspect Ele
  • decltype((c)) 中括号的含义? [复制]

    这个问题在这里已经有答案了 我正在读书维基百科上的这篇文章关于C 11 类型推断 feature http en wikipedia org wiki C 11 Type inference 有一个例子 我引用一下 include
  • C# 类/对象可视化软件

    在 Visual Studio 2005 及更早版本中 您可以将代码导出到 Visio 并查看对象之间的关系及其具有的方法 属性和字段 这很棒 因为它允许您调整外观以改善外观 在 VS 2008 中 该选项消失了 据说 被类图系统取代 它很
  • WPF - FrameworkElement - 枚举所有后代?

    我有一个FrameworkElement 真的是一个ToggleButton 其内容中有一个Popup 我这样访问它 ToggleButton button ToggleButton sender Popup popup Popup but
  • 如何查找某个国家/地区人口超过X的城市

    我正在尝试查找丹麦人口超过 10 万的城市 我可以使用此代码找到丹麦的所有城市 SELECT s o WHERE s a
  • scala排序稳定吗?

    Scala 集合有sortBy方法 这个方法稳定吗 def sortList source List Int List Int source sortBy 2 这个例子总是能保持秩序吗 是的 它很稳定 参考scala源码 https git
  • 如何将针对 DTO 的 OData 查询映射到 EF 实体?

    我在 Asp Net Web Api 应用程序中有一个允许 OData 查询的 ODataController 我只允许读取 不允许更新 我没有直接公开数据模型 而是创建了一组 DTO DTO 上的属性名称不一定与 EF 模型上的属性匹配
  • Jupyter笔记本,如何在正确的conda环境中执行系统shell命令?

    我目前在使用 jupyter 笔记本和系统 shell 命令时遇到一些问题 我使用 nb conda kernels 能够从基础环境中启动的 jupyter 笔记本访问我的所有 conda 环境 这在我的大多数用例中都完美运行 为了简单起见
  • KSoap-Android\JCIFS 发送空 HTTP 帖子

    我创建了一个基于 KSOAP Android 和 JCIFS 的 NTLM 身份验证 SOAP 客户端 实现看起来像这样 public class NtlmServiceConnection implements ServiceConnec
  • double 到 unsigned int / char

    I read here https stackoverflow com questions 10541200 casting double to unsigned int that 根据 C99 6 3 1 4 脚注 50 当整数类型的值是
  • 重载函数签名 haskell

    当我编译时 我收到以下错误消息 重复的类型签名 WeightedMedian hs 71 0 39 findVal ValPair gt 双 gt 双WeightedMedian hs 68 0 36 findVal ValPair gt