Subtypes: Automation, Reference.

One of the basic building block of Я - function.

You can use its type alias (AR) for good looking infix type operator:

      (a `AR` o) ~ (AR a o)
     (a `AR_` o) ~ (AR_ a o)
    (a `AR__` o) ~ (AR__ a o)
   (a `AR___` o) ~ (AR___ a o)
  (a `AR____` o) ~ (AR____ a o)
 (a `AR_____` o) ~ (AR_____ a o)
(a `AR______` o) ~ (AR______ a o)

You can map input contravariantly:

… and output covariantly):