================================================================================
Type
================================================================================

type A = A

--------------------------------------------------------------------------------

(purescript
  (type_alias
    name: (type)
    (type_name
      (type))))

================================================================================
Type with parameters
================================================================================

type A a = A a

--------------------------------------------------------------------------------

(purescript
  (type_alias
    name: (type)
    (type_variable)
    (type_apply
      (type_name
        (type))
      (type_name
        (type_variable)))))

================================================================================
Type with parameters and signature
================================================================================

type A :: forall k. k -> k
type A a = a

--------------------------------------------------------------------------------

(purescript
  (type_alias
    (type_signature
      (type)
      (type_infix
        (forall
          (type_variable))
        (type_name
          (type_variable))
        (type_operator)
        (type_name
          (type_variable))))
    name: (type)
    (type_variable)
    (type_name
      (type_variable))))
