txt: ## hyperwhatever.md
  class HyperWhatever
  
  Placeholder for multiple unspecified values/arguments
  
  ```raku
  class HyperWhatever { }
  ```
  
  `HyperWhatever` is very similar in functionality to [`Whatever`](/type/Whatever). The difference lies in `HyperWhatever` standing in for *multiple* values, rather than a single one.
  
  # [Standalone term](#class_HyperWhatever "go to top of document")[§](#Standalone_term "direct link")
  
  Just like with [`Whatever`](/type/Whatever), if a `HyperWhatever` is used as a term on its own, no priming is done and the `HyperWhatever` object will be used as-is:
  
  ```raku
  sub foo ($arg) { say $arg.^name }
  foo **; # OUTPUT: «HyperWhatever␤»
  ```
  
  You can choose to interpret such a value as standing for multiple values in your own routines. In core, a `HyperWhatever` can be used with this meaning when smartmatching with [`List`](/type/List)s:
  
  ```raku
  say (1, 8)                ~~ (1, **, 8); # OUTPUT: «True␤»
  say (1, 2, 4, 5, 6, 7, 8) ~~ (1, **, 8); # OUTPUT: «True␤»
  say (1, 2, 8, 9)          ~~ (1, **, 8); # OUTPUT: «False␤»
  ```
  
  Wherever a `HyperWhatever` appears in the list on the right-hand side means any number of elements can fill that space in the list being smartmatched.
  
  # [Priming](#class_HyperWhatever "go to top of document")[§](#Priming "direct link")
  
  When it comes to priming, the `HyperWhatever` follows the same rules as [`Whatever`](/type/Whatever). The only difference is `HyperWhatever` produces a [`Callable`](/type/Callable) with a [`*@` slurpy](/language/signatures#Flattened_slurpy) as a signature:
  
  ```raku
  say (**²)(1, 2, 3, 4, 5); # OUTPUT: «(1 4 9 16 25)␤»
  ```
  
  A `HyperWhatever` closure can be imagined as a [`WhateverCode`](/type/WhateverCode) with **another** sub wrapped around it that simply maps each element in the arguments over:
  
  ```raku
  my &hyper-whatever = sub (*@args) { map *², @args }
  say hyper-whatever(1, 2, 3, 4, 5); # OUTPUT: «(1 4 9 16 25)␤»
  ```
  
  When priming, mixing `HyperWhatever` with [`Whatever`](/type/Whatever) is not permitted.
  
  # [Typegraph](# "go to top of document")[§](#typegraphrelations "direct link")
  
  Type relations for `HyperWhatever`
  
  
  
  raku-type-graph
  
  
  
  HyperWhatever
  HyperWhatever
  
  
  Any
  Any
  
  
  HyperWhatever->Any
  
  
  
  Mu
  Mu
  
  
  Any->Mu
  
  [Expand chart above](/assets/typegraphs/HyperWhatever.svg)
  