Literal Pattern
rascal-0.40.17
Synopsis
Literal in abstract pattern.
Syntax
"string"
123
1.0
|http://www.rascal-mpl.org|
Description
A literal of one of the basic types Boolean, Integer, Real, Number, String, Location, or DateTime can be used as abstract pattern. A literal pattern matches with a value that is identical to the literal.
Examples
A literal pattern matches with a value that is equal to it:
rascal>123 := 123
bool: true
rascal>"abc" := "abc"
bool: true
A literal pattern does not match with a value that is not equal to it:
rascal>123 := 456
bool: false
rascal>"abc" := "def"
bool: false
If the type of the literal pattern is incomparable to the subject's type, a static type error is produced to announce that the match is guaranteed to fail:
rascal>123 := "abc";
|prompt:///|(7,5,<1,7>,<1,12>): Expected int, but got str
Advice: |https://www.rascal-mpl.org/docs/Rascal/Errors/CompileTimeErrors/UnexpectedType|
ok
However, a literal pattern can be used to filter among other values:
rascal>value x = "abc";
value: "abc"
rascal>123 := x;
bool: false
rascal>x = 123;
value: 123
rascal>123 := x;
bool: true