String Operators perform various operations on the terms specified. There are several different types of operation available.

Symbol | Type | Name | Description | Example |
---|---|---|---|---|

Arithmetic |
||||

~ | Infix | Concatenation | Joins the right term to the end of the left term | ` a ~ b ` |

~* | Infix | Repetition | Repeats the left term by the number specified by the right term | ` a ~* b ` |

Bitwise |
||||

~& | Infix | AND | Bits that are set in both left and right terms are set | ` a ~& b ` |

~| | Infix | OR | Bits that are set in either left or right terms are set | ` a ~| b ` |

~^ | Infix | XOR | Bits that are set in either left or right terms, but not both, are set | ` a ~^ b ` |

~^ | Prefix | NOT | All bits in the term are inverted | ` ~^ a ` |

~< | Infix | Shift left | Shift the bits of the left term left by the number of steps specified in the right term | ` a ~< b ` |

~> | Infix | Shift right | Shift the bits of the left term right by the number of steps specified in the right term | ` a ~> b ` |

Type Casting |
||||

~ | Prefix | Cast | Converts the term to a String | ` ~a ` |

Type Checking |
||||

is | Infix | IsType | Checks if the value of the left term is of the type specified by the right term | `a is string` |

Each Operator will evaluate the terms provided as appropriate to the Operator value type - for instance, performing a concatenation on two Numbers will convert the Numbers to Strings first.