当前位置:  开发笔记 > 编程语言 > 正文

将负整数传递给OCaml中的函数时出错

如何解决《将负整数传递给OCaml中的函数时出错》经验,为你挑选了1个好方法。

如果我在OCaml中定义一个函数,例如let f x = x + 1;;然后我尝试调用它传递一个负数, f -1;;它给我以下错误

Error: This expression has type int -> int
   but an expression was expected of type int

为什么会出现此错误?



1> PatJ..:

基本上,它来自解析器的优先级.编译器认为,f -1意味着你要减去f1.它已被抱怨多年了.

输入f (-1)f ~-1将解决您的问题(后者使用"明确的一元减号").

更新:

如OCaml手册中所述:

一元否定.你也可以写--e而不是〜 - e.

基本上,-既可以用作二元运算符,也可以用作4 - 1一元运算符-1.但是,就像你的情况一样,可能存在混淆:f - 1是"f减1"而不是"f应用于减1".所以~-操作员被添加到一个非混乱的一元减号.

请注意,空格在这里并不重要,并且不会更改,因为许多现有代码可能包含没有空格的操作.

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有