gpt4 book ai didi

f# - 为什么这个 (~=) 被认为是前缀运算符?

转载 作者:行者123 更新时间:2023-12-01 06:31:07 27 4
gpt4 key购买 nike

let tolerance = 0.00000001
let (~=) x1 x2 = abs(x1 - x2) < tolerance

这会引发错误:“无效的运算符定义。前缀运算符定义必须使用有效的前缀运算符名称”

这甚至都不是前缀运算符,我不明白为什么会这么想。

但是以下是好的:

let (=~) x1 x2 = abs(x1 - x2) < tolerance

我只是调换了顺序,所以“=”在“~”之前。

网上有没有文档说明这方面的一些规则?

我正在使用带有“F# 2013”​​的 Visual Studio 2013。交互式控制台显示“F# Interactive 版本 12.0.21005.1”

最佳答案

您不能在 F# 中定义以 ~ 开头的中缀运算符。

F# 3.0 specification, section Categorization of Symbolic Operators很清楚地解释了原因:

The operators +, -, +., -., %, %%, &, && can be used as both prefix and infix operators. When these operators are used as prefix operators, the tilde character is prepended internally to generate the operator name so that the parser can distinguish such usage from an infix use of the operator. For example, -x is parsed as an application of the operator ~- to the identifier x. This generated name is also used in definitions for these prefix operators. Consequently, the definitions of the following prefix operators include the ~ character.

关于f# - 为什么这个 (~=) 被认为是前缀运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23594108/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com