WITCH bang


"not!", "!nvert", "!mportant", "!nternal", "ouch!"
-- most of the time is used to invert, negate, and booleanize
-- also used in error/exception handling
-- and to mark private stuff forbidden

Used alone

! negated boolean coercer as in common parlance (that means "use it like you are used to doing")
! in place of the method operator is used with private methods

Used as a brace pair or quote pair

Operators containing this character

! can mutate other operators to negate their boolean sense
!! is the second part of the ternary conditional operator
!!! is a fatal yadayadayada

When used inside regexes

!{ in extensible metasyntax introduces an inverted code assertion
! should be backslashed or otherwise treated as it is non-alphanumeric, even though it is not currently metasyntactical

Special Variables

$! is the current exception topic

As an adverb

:! before the adverb of an adverbial pair constructor, is shorthand for assigning a value of 0 (which is false)

Other Uses

! after a parameter in a prototype marks it as a required parameter
! as a class attribute twigil designates it a private attribute
! as submethod parameter twigil creates an attributive parameter
! on a pair query method, however, is for boolean inversion
! designates a commandline option was prefixed with a + in a MAIN subroutine

Old, deprecated, or other language uses

!! does not do a double invert, use ? to coerce boolean