## 8.1 Procedures

The module `Procedure` specifies operations on procedures.

`IsProcedure`

  > `{Procedure.is` `+X``` `?B``}`

  tests whether `X` is a procedure.

`ProcedureArity`

  > `{Procedure.arity` `+P``` `?I``}`

  returns the procedure arity of `P`, i. e., the number of arguments which `P` takes.

`apply`

  > `{Procedure.apply` `+P``` `+Xs``}`

  applies the procedure `P` to the arguments given by the elements of the list `Xs`, provided that

  > `{Procedure.arity` `P``} == {Length` `Xs``}`