+1 和 -1 之间的差异

2024-01-04

> :t (+1)
(+1) :: Num a => a -> a

> :t (-1)
(-1) :: Num a => a

为什么第二个不是函数?我必须写吗(+(-1))或者,还有更好的方法?


这是因为(-1)然而被解释为消极的(+1)被解释为柯里化函数(\x->1+x).

在哈斯克尔中,(a **)是语法糖(**) a, and (** a) is (\x -> x ** a)。然而(-)是一种特殊情况,因为它既是一元运算符(否定)又是二元运算符(减号)。因此,这个语法糖不能明确地应用在这里。当你想要的时候(\x -> a - x)你可以写(-) a,并且,正如已经回答的那样柯里化减法 https://stackoverflow.com/questions/4454559/currying-subtraction/,您可以使用以下功能negate and subtract消除一元和二进制之间的歧义-功能。

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

+1 和 -1 之间的差异 的相关文章

  • 陷入状态 Monad

    我想使用节点和唯一键的 IntMap 创建一个图形结构 这个话题已经被很好地涵盖了here https stackoverflow com questions 12941625 ids from state monad in haskell
  • 在 Haskell 中的列表末尾添加一个元素

    我是 Haskell 的初学者 我正在尝试在列表末尾添加一个元素 我输入一个像 1 2 3 4 这样的列表和一个数字 10 我想要一个像这样的输出 1 2 3 4 10 My code func a a func a x xs x func
  • 为什么Data.Hashmap中没有mapKeys?

    我想使用诸如mapKeys to map仅限按键 即有一个功能mapKeys in Data Map 但没有类似物Data Hashmap 此外 在Data Hashmap我没有发现任何有关操作按键的信息 是否只有不完整之处Data Has
  • unsafePerformIO 和 FFI 库初始化

    我正在为 C 中的库创建一个 FFI 模块 该模块希望在执行其他操作之前调用一个一次性 不可重入的函数 这个调用是幂等的 但是有状态的 所以我可以在每个 Haskell 调用中调用它 但它很慢 并且由于不可重入 可能会导致冲突 那么现在是使
  • 用户状态(秒差距)

    我正在使用秒差距解析一个表达式 并且我想使用秒差距中的用户状态来跟踪这些表达式中的变量 不幸的是我真的不知道该怎么做 给出以下代码 import Data Set as Set inp x y z data Var V String var
  • TypeError: 调用 Function.prototype.method() 时 this.prototype 未定义

    我正在读 Javascript 优秀部分 一书 现在我正在阅读有关增强类型的章节 Function prototype method function name func this prototype name func return th
  • 使用取消嵌套函数插入 - 跳过序列列中的数字

    我正在尝试在插入中使用 unnest 功能 这样做时 序列号会为每个插入跳过一个数字 请帮我解决这个问题 mydb d tab1 Table public tab1 Column Type Modifiers id integer not
  • 有没有原生 DLL 导出函数查看器? [复制]

    这个问题在这里已经有答案了 是否有免费的本机 Windows DLL 导出函数查看器 它显示函数名称及其参数列表 dumpbin从 Visual Studio 命令提示符处 dumpbin exports csp dll 输出示例 Micr
  • 什么时候可以将函数绑定到另一个名称?

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

    我尝试这样做 解析以下形式的文本 一些文本 0 0 0 一些文本 0 0 0 0 0 0 更多文本 0 0 0 进入一些数据结构的列表 内部 一些文本 外部 0 0 0 内部 一些文本 外部 0 0 0 外部 0 0 0 内部 更多文本 外
  • 功能段落

    抱歉 我还不太明白 FP 我想将一系列行分割成一系列行序列 假设一个空行作为段落划分 我可以在 python 中这样做 如下所示 def get paraghraps lines paragraphs paragraph for line
  • 仅使用 Hunit 在 Haskell 中创建并运行最小测试套件

    我对 Haskell 比较陌生 所以如果我的术语不太正确 请提前道歉 我想为一个非常简单的项目实现一些简单的单元测试 通过管理cabal 我注意到这个非常相似的问题 https stackoverflow com questions 118
  • 在函数中声明默认参数在幕后有什么作用?

    这不是调试问题或操作方法问题 这是一个概念性问题 我发现很难理解什么this https developer mozilla org en US docs Web JavaScript Reference Functions Default
  • Haskell 错误:“非详尽模式”

    所以我有这个功能 当我尝试像这样使用它时 合并排序列表 1 1 1 1 它给了我一个错误 1 1 例外 SortFunctions hs 86 1 91 89 非详尽 函数 mergeSortedLists 中的模式 85 mergeSor
  • 如何列出运行时函数的所有调用?

    有什么办法可以list 在VS中显示 写入文件 所有来电者 对象 函数 一个函数的当程序运行时 可能使用调试器 我需要record 所有通话 包括来电者 一个函数的从计划启动到终止 简单扫描源代码或二进制文件不做这份工作因为该程序可以作为服
  • 理解 Haskell 中的矩阵转置函数

    这个矩阵转置函数有效 但我试图理解它的逐步执行 但我不明白 transpose a gt a transpose transpose x map head x transpose map tail x with transpose 1 2
  • 是否可以对更高种类类型的类实例强制执行类型约束?

    我有一个这样定义的类型 newtype PrimeSet a P Integer deriving Eq 我还定义了一个将素数集转换为列表的函数 假设它的类型参数是Integral toList Integral a gt PrimeSet
  • 将 void* 作为函数调用而不声明函数指针

    我已经搜索过 但找不到任何结果 我的术语可能有问题 所以如果以前有人问过这个问题 请原谅我 我想知道是否有一种简单的方法可以调用void 作为 C 中的函数 无需首先声明函数指针 然后为函数指针分配地址 IE 假设要调用的函数是类型void
  • Haskell 长度函数实现

    我正在学习 Haskell 编程 我试图理解列表是如何工作的 因此我尝试编写两个可能的length功能 myLength a gt Integer myLength foldr x gt 1 0 myLength1 a gt Integer
  • 按广度优先顺序列出目录所有内容导致效率低下

    我编写了一个 Haskell 模块来按广度优先顺序列出目录的所有内容 下面是源代码 module DirElements dirElem where import System Directory getDirectoryContents

随机推荐