strip_fun : hol_type -> hol_type list * hol_type

SYNOPSIS
Iteratively breaks apart function types.

DESCRIBE
If fty is of the form ty1 -> (... (tyn -> ty) ...), then strip_fun fty returns ([ty1,...,tyn],ty). Note that
   strip_fun(list_mk_fun([ty1,...,tyn],ty))
will not return ([ty1,...,tyn],ty) if ty is an implication.

FAILURE
Never fails.

EXAMPLE
- strip_fun (Type `:(a -> 'bool) -> ('b -> 'c)`);
> val it = ([`:a -> 'bool`, `:'b`], `:'c`) : hol_type list * hol_type

SEEALSO  list_mk_fun,   dom_rng,   dest_type

HOL  Kananaskis 0