ocaml - 如何评估 float_of_int -3?
问题描述
# float_of_int -3;;
Error: This expression has type int -> float
but an expression was expected of type int
我认为函数应用程序具有最高优先级,因此float_of_int -3
等于float_of_int (-3)
. 为什么我需要明确地将括号放在那里以抑制错误?
解决方案
正是由于这个原因,该函数应用程序具有比中缀运算符更高的优先级,您必须添加括号。
换句话说,函数应用是贪婪的,它会消耗所有的术语,直到它到达一个中缀运算符,例如,
f x y z + g p q r
被解析为(f x y z) + (g p q r)
。
你的例子也是如此,
float_of_int - 3
被解析为
(float_of_int) - (3)
您的另一个选择是使用特殊的前缀运算符~-
,例如,
float_of_int ~-1
它比函数应用程序具有更高的优先级(绑定更紧密)。
推荐阅读
- django-models - 如何构造 Django 枚举过滤器
- python - 将列表值分配给Python中字典中的键时的奇怪行为
- assembly - 无法获取有关到达 PROC 末尾的资源
- node.js - 使用 react-native 和后端 API 实现原生社交身份验证流程
- shell - 编写一个脚本,提示用户输入文件名,然后更改文件的权限
- c# - C#如何将可选参数作为集合传递?
- laravel - 找不到类“App\Http\Controllers\Api\Validator”
- function - Powershell 功能开关
- hybris - B2C项目中的Bundle同步
- excel - 从“查找”范围查找最大日期