什么时候可以将函数绑定到另一个名称?

2024-04-27

在解释器中工作时,将函数绑定到名称通常很方便,例如:

ghci> let f = (+1)
ghci> f 1
2

这是别名f到函数(+1)。简单的。

然而,这并不总是有效。我发现导致错误的一个例子是尝试使用别名nub来自Data.List模块。例如,

ghci> :m Data.List
ghci> nub [1,2,2,3,3,3]
[1,2,3]
ghci> let f = nub
ghci> f [1,2,2,3,3,3]

<interactive>:1:14:
    No instance for (Num ())
      arising from the literal `3'
    Possible fix: add an instance declaration for (Num ())
    In the expression: 3
    In the first argument of `f', namely `[1, 2, 2, 3, ....]'
    In the expression: f [1, 2, 2, 3, ....]

但是,如果我明确陈述论点x然后它就可以正常工作:

ghci> let f x = nub x
ghci> f [1,2,2,3,3,3]
[1,2,3]

谁能解释这种行为?


当前 Ghci 版本中的类型默认规则有些难以理解。

您可以提供类型签名f。或者添加:set -XNoMonomorphismRestriction给你的~/.ghci按照克里斯之前的建议归档。

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

什么时候可以将函数绑定到另一个名称? 的相关文章

随机推荐

  • 无法使 npm install -g 适用于我的包

    我正在尝试将 CLI 功能添加到我的 npm 包拦截代理中 我找不到任何好的文档 所以我基本上从express js 复制和修改了内容 I added bin intercept proxy bin intercept proxy 我的 p
  • 如何在magento中将订单状态设置为“完成”

    如何手动将订单状态设置为 完成 我正在使用以下代码 但它给出错误消息 订单状态 完成 不得手动设置 order Mage getModel sales order gt loadByIncrementId order id order gt
  • 如何在 JSF 中使用 EL 内的 HTML 字符实体?

    我想使用em dash http en wikipedia org wiki Dash在一个值属性中h link成分 这是我的尝试 目前不起作用
  • bash 脚本中带有 PKCS#12 证书的 cURL

    我必须连接到网络服务 其中必须有 pkcs12 证书 这个想法是在 bash 脚本中使用curl 具体来说 在 OS X 下 我了解到 curl 在通信中无法做的少数事情之一是处理 pkcs12 证书 p12 我有什么选择 我读过将证书转换
  • Typescript:映射联合类型时的类型级数学

    是否可以使用类型级数学来映射打字稿中的联合类型以生成作为第一个联合的函数的新联合 例如 我想使用现有的联合类型 type foo 768 1024 1280 为了产生这个并集 每个选项除以 16 type bar 48 64 80 如果工会
  • 编译资产时“堆栈级别太深”

    运行后brew upgrade 或者其他更新了我的 gems ruby 版本的东西 我的rake assets precompile任务不再有效 我收到此错误 rake aborted stack level too deep in Use
  • 梯度下降Matlab实现

    我已经浏览了堆栈溢出中的许多代码 并在同一行上编写了自己的代码 这段代码有一些问题我无法理解 我正在存储值 theta1 和 theta 2 以及用于分析目的的成本函数 x 和 Y 的数据可以从此下载页 它具有 dat 文件形式的 x 和
  • Rails 3 具有 12 小时格式的时间选择表单助手?

    Rails 3 有用户友好的 time select 吗 默认的 time select 表单助手为您提供小时 00 23 分钟 00 59 和可选的秒 00 59 对于我们这些非军事时间的人来说 0 23 小时的下拉列表非常令人沮丧 用户
  • System.Design 去哪儿了?

    我正在制作一个使用 ScintillaNet 的 C 项目 它显示 无法解析引用的程序集 ScintillaNet 因为它依赖于 System Design Version 4 0 0 0 Culture neutral PublicKey
  • 如何在reactjs中将可选元素作为 prop 传递给组件

    我试图找出正确的 反应 方式来传递一个可选的 prop 该 prop 是一个容器组件的 Element 该组件的处理方式与该组件的子组件不同 举一个简单的例子 我有一个面板组件 它渲染它的子组件 它还有一个可选的 title 道具 为了示例
  • 字母数字和空格的正则表达式

    不能包含除空格之外的任何特殊字符的文本的正则表达式是什么 Because Prajeesh https stackoverflow com users 112352 prajeesh只想匹配空格 s 不够 因为它匹配所有空白字符 包括换行符
  • 如何克隆 GitHub wiki?

    如何克隆 GitHub 存储库的 wiki 我知道它保存为单独的 Git 存储库 但我不记得路径了 我试过了 reponame wiki git and reponame git wiki 但两者都不正确 Append wiki git到存
  • 如何将带有动态内容的无序列表居中放置在 div 中?

    我正在尝试找出一种将 div 内的无序列表垂直居中的方法 我找到了很多方法来做到这一点 但是我的 ul 标签中的 li 标签中有 PHP 代码 可以从数据库获取文本 这会导致 li 标签中的文本长度发生变化 显着导致内部垂直筛选我的 div
  • SSIS Forloop:根据迭代次数为变量名称赋值

    我正在尝试使用 For 循环容器为最多 10 个不同的变量赋值 变量1 变量2 变量10 基于迭代次数 我需要循环根据一个变量迭代一定次数 该变量已根据查询的结果集分配了一个整数值 该部分工作得很好 我不知道如何告诉 for 循环使用哪个变
  • Android 中“屏幕尺寸”和“屏幕密度”之间的区别?

    我有几个问题 是什么屏幕尺寸 是什么屏幕密度 什么是不同之处之间屏幕尺寸 and 屏幕密度 Android 如何支持不同的密度和不同的屏幕尺寸 我已经读过官方文档 http developer android com training mu
  • 转换多索引时间序列的最有效方法

    我有一个由许多堆叠时间序列组成的 DataFrame 索引为 poolId Month 其中两者都是整数 月 是自 2000 年以来的月数 计算多个变量的一个月滞后版本的最佳方法是什么 现在 我做了类似的事情 cols to shift b
  • 按主题更改 ActionBar 的高度

    我想删除 ActionBar 下面的阴影 我知道我需要将高度更改为 0dp 但我想在主题中执行此操作 对于 Android 4 4 我使用
  • 您如何使用(描述的)技术来处理 .Net 中的 C 结构和指针?

    你如何使用这里描述的技术 https stackoverflow com questions 3235916 a way how to compile c library into net dll 3236027 3236027使用 Net
  • 在DOS中创建带有echo的文件而不插入回车符

    我想在 DOS 中的 CIFS 挂载上创建一个新文件 如果我做 echo hello gt foo txt hello 的末尾会有一个 CR 如何使用 echo 在 DOS cmd 中创建文件而不自动附加 CR 它导致 samba 和我的
  • 什么时候可以将函数绑定到另一个名称?

    在解释器中工作时 将函数绑定到名称通常很方便 例如 ghci gt let f 1 ghci gt f 1 2 这是别名f到函数 1 简单的 然而 这并不总是有效 我发现导致错误的一个例子是尝试使用别名nub来自Data List模块 例如