functions [ {+|-}UkmtTuWz ] [ -x num ] [ name ... ]
functions -M [-s] mathfn [ min [ max [ shellfn ] ] ]
functions -M [ -m pattern ... ]
functions +M [ -m ] mathfn ...
       Equivalent  to  typeset -f, with the exception of the -x, -M and
       -W options.  For functions -u and functions  -U,  see  autoload,
       which provides additional options.

       The -x option indicates that any functions output will have each
       leading tab for indentation, added by the shell to show  syntac-
       tic  structure, expanded to the given number num of spaces.  num
       can also be 0 to suppress all indentation.

       The -W option turns on the option WARN_NESTED_VAR for the  named
       function  or  functions  only.   The option is turned off at the
       start of nested functions (apart from anonoymous functions)  un-
       less the called function also has the -W attribute.

       Use of the -M option may not be combined with any of the options
       handled by typeset -f.

       functions -M mathfn defines mathfn as the name of a mathematical
       function  recognised  in  all forms of arithmetical expressions;
       see the section `Arithmetic Evaluation' in zshmisc(1).   By  de-
       fault  mathfn  may take any number of comma-separated arguments.
       If min is given, it must have exactly min args; if min  and  max
       are  both given, it must have at least min and at most max args.
       max may be -1 to indicate that there is no upper limit.

       By default the function is implemented by a  shell  function  of
       the  same name; if shellfn is specified it gives the name of the
       corresponding shell function while mathfn remains the name  used
       in  arithmetical expressions.  The name of the function in $0 is
       mathfn (not shellfn as would usually be the case), provided  the
       option FUNCTION_ARGZERO is in effect.  The positional parameters
       in the shell function correspond to the arguments of the  mathe-
       matical  function call.  The result of the last arithmetical ex-
       pression evaluated inside the shell function (even if  it  is  a
       form  that  normally  only returns a status) gives the result of
       the mathematical function.

       If the additional option -s is given to functions -M, the  argu-
       ment  to  the  function is a single string: anything between the
       opening and matching closing parenthesis is passed to the  func-
       tion  as  a single argument, even if it includes commas or white
       space.  The minimum and maximum argument specifiers must  there-
       fore  be  1  if  given.   An  empty argument list is passed as a
       zero-length string.

       functions -M with no arguments lists all such user-defined func-
       tions in the same form as a definition.  With the additional op-
       tion -m and a list of  arguments,  all  functions  whose  mathfn
       matches one of the pattern arguments are listed.

       function +M removes the list of mathematical functions; with the
       additional option -m the arguments are treated as  patterns  and
       all  functions  whose  mathfn  matches  the pattern are removed.
       Note that the shell function implementing the behaviour  is  not
       removed (regardless of whether its name coincides with mathfn).

       For example, the following prints the cube of 3:

              zmath_cube() { (( $1 * $1 * $1 )) }
              functions -M cube 1 1 zmath_cube
              print $(( cube(3) ))

       The following string function takes a single argument, including
       the commas, so prints 11:

              stringfn() { (( $#1 )) }
              functions -Ms stringfn
              print $(( stringfn(foo,bar,rod) ))
