将 ⊤ ("down tack") 字符定义为我可以在我的程序中使用的常量
Define ⊤ ("down tack") character as a constant I can use in my program
我正在尝试用 Perl6 编写一些逻辑语句。
我做了逻辑运算符:
multi sub prefix:<¬> ($n) {
return not $n;
}
multi sub infix:<∧> ($n, $b) {
return ($n and $b);
}
multi sub infix:<∨> ($n, $b) {
return ($n or $b);
}
multi sub infix:<⇒> ($n, $b) {
if $n == True and $b == True {
return True;
} elsif $n == True and $b == False {
return False;
} elsif $n == False {
return True;
}
}
multi sub infix:<⇐> ($n, $b) {
return $b ⇒ $n;
}
但希望能够为 true 和 false 引入新的符号。目前,我有:
say ((False ⇒ ¬(False ∨ True)) ∧ (False ∨ True));
但是,我想:
say ((⟂ ⇒ ¬(⟂ ∨ ⊤)) ∧ (⟂ ∨ ⊤));
我想也许我可以将这些符号定义为常量:
constant ⊤ = True;
constant ⊥ = False;
但是,如果我这样做,我会得到这个错误:
Missing initializer on constant declaration at
/home/devXYZ/projects/test.pl6:1
⊤
字符作为标识符无效:
say "⊤" ~~ /<.ident>/; # Nil
即使 constant
语法允许声明这样的名称,也没有办法使用它,因为符号名称解析也只查找标识符。
需要的是将其作为一个新术语引入。这很像添加前缀或中缀运算符,因为它扩展了语言以接受它原本不会接受的东西。这可以使用 constant
来完成,像这样:
constant \term:<⊤> = True;
say ⊤; # True
为了确保您在定义和使用行中使用了正确的 unicode 字符,您可以使用方便的 .&uniname
方法。不同的字符在某些字体下可能看起来相似:
> say "⟂".&uniname
PERPENDICULAR
> say "⊥".&uniname
UP TACK
我正在尝试用 Perl6 编写一些逻辑语句。
我做了逻辑运算符:
multi sub prefix:<¬> ($n) {
return not $n;
}
multi sub infix:<∧> ($n, $b) {
return ($n and $b);
}
multi sub infix:<∨> ($n, $b) {
return ($n or $b);
}
multi sub infix:<⇒> ($n, $b) {
if $n == True and $b == True {
return True;
} elsif $n == True and $b == False {
return False;
} elsif $n == False {
return True;
}
}
multi sub infix:<⇐> ($n, $b) {
return $b ⇒ $n;
}
但希望能够为 true 和 false 引入新的符号。目前,我有:
say ((False ⇒ ¬(False ∨ True)) ∧ (False ∨ True));
但是,我想:
say ((⟂ ⇒ ¬(⟂ ∨ ⊤)) ∧ (⟂ ∨ ⊤));
我想也许我可以将这些符号定义为常量:
constant ⊤ = True;
constant ⊥ = False;
但是,如果我这样做,我会得到这个错误:
Missing initializer on constant declaration at /home/devXYZ/projects/test.pl6:1
⊤
字符作为标识符无效:
say "⊤" ~~ /<.ident>/; # Nil
即使 constant
语法允许声明这样的名称,也没有办法使用它,因为符号名称解析也只查找标识符。
需要的是将其作为一个新术语引入。这很像添加前缀或中缀运算符,因为它扩展了语言以接受它原本不会接受的东西。这可以使用 constant
来完成,像这样:
constant \term:<⊤> = True;
say ⊤; # True
为了确保您在定义和使用行中使用了正确的 unicode 字符,您可以使用方便的 .&uniname
方法。不同的字符在某些字体下可能看起来相似:
> say "⟂".&uniname
PERPENDICULAR
> say "⊥".&uniname
UP TACK