code: function TypeVariable(name) {
      var tuples = [];
      var test = typeVarPred (tuples.length);
      return _Type (VARIABLE, name, '', 0, always2 (name), [], test, tuples);
    }
docs: # TypeVariable :: String -> Type . . Polymorphism is powerful. Not being able to define a function for . all types would be very limiting indeed: one couldn't even define the . identity function! . . Before defining a polymorphic function one must define one or more type . variables: . . ```javascript . const a = $.TypeVariable ('a'); . const b = $.TypeVariable ('b'); . . //    id :: a -> a . const id = def ('id') ({}) ([a, a]) (x => x); . . id (42); . // => 42 . . id (null); . // => null . ``` . . The same type variable may be used in multiple positions, creating a . constraint: . . ```javascript . //    cmp :: a -> a -> Number . const cmp = . def ('cmp') .     ({}) .     ([a, a, $.Number]) .     (x => y => x < y ? -1 : x > y ? 1 : 0); . . cmp (42) (42); . // => 0 . . cmp ('a') ('z'); . // => -1 . . cmp ('z') ('a'); . // => 1 . . cmp (0) ('1'); . // ! TypeError: Type-variable constraint violation . // . //   cmp :: a -> a -> Number . //          ^    ^ . //          1    2 . // . //   1)  0 :: Number . // . //   2)  "1" :: String . // . //   Since there is no type of which all the above values are members, the type-variable constraint has been violated. . ```