我正在尝试为 R 中的逻辑变量创建一个“暗示”运算符,以使命题演算更容易。然而,它似乎并不适合否定运算符。正如这里的最后 4 行所示,我必须将否定变量括在括号中,以使蕴含运算符正常工作。
我怀疑运算符优先级是问题,但我不确定。从我读到的内容来看,没有办法改变中缀运算符的优先级。有没有一种方法可以重新定义,这样就不需要implies()
括号了?(!q) %->% (!p)
> implies <- function(p, q) !p | q
> "%->%" <- implies
>
> p <- c(TRUE, TRUE, FALSE, FALSE)
> q <- c(TRUE, FALSE, TRUE, FALSE)
> p %->% q
[1] TRUE FALSE TRUE TRUE
> !q %->% !p
[1] TRUE FALSE FALSE FALSE
> (!q) %->% !p
[1] TRUE FALSE TRUE TRUE