txt: ## dist_zef-witawayar-Asserter.md
  ## Asserter
  
  Be assertive in the form `assert EXPR, MESSAGE?`
  
  ```
  use Asserter;
  
  # Without a custom message, expression itself and its value are reported
  my $val = Empty;
  assert $val;
  #= Assertion failed: `$val` is not true; it evaluates to `Empty`
  
  # You can say what you like
  assert $val.&prime-factors.pick.is-prime, "mathematics gone wrong";
  #= Assertion failed: mathematics gone wrong
  
  # If condition is truthful, short-circuits, i.e., MESSAGE is not evaluated
  assert True, destroy-the-universe();
  #= Universe is still fine at this point
  
  # The error is CATCHable as:
  {
      CATCH {
          when X::Assertion {
              ...
          }
      }
      assert ...;
  }
  
  # If more than 2 things are supplied, it errs in compile time
  assert $val, "message", "and some more";
  #`[
  ===SORRY!=== Error while compiling some/file.raku
  That's too assertive; expected 1 or 2 things, got 3
  at some/file.raku:5
  ------> assert $val, "message", "and some more"⏏;
  ]
  
  ```
  
  ### .WHAT, .WHY, .HOW
  
  Sometimes you want to make sure something is something in the program flow; `assert` does
  that for you, like in C, Java, Python and others. It compiles to something like `die MESSAGE
  unless EXPR`, which a programmer could be lazy enough not to write in full. So this module
  refines the main slang to do that with the word `assert`.
  
  #### Installation
  
  Using [pakku](https://github.com/hythm7/Pakku):
  
  ```
  pakku add Asserter
  
  ```
  