/* $DOC$
   $AUTHOR$
      Copyright 2000 Luiz Rafael Culik <culik@sl.conex.net>
   $TEMPLATE$
      Function
   $NAME$
      Eval()
   $CATEGORY$
      API
   $SUBCATEGORY$
      Execute and Execution
   $ONELINER$
      Evaluate a code block
   $SYNTAX$
      Eval( <bBlock> [, <xVal> [,...] ] ) --> xExpression
   $ARGUMENTS$
      <bBlock>   Code block expression to be evaluated

      <xVal>     Argument to be passed to the code block expression

      <xVal...>  Argument list to be passed to the code block expression
   $RETURNS$
      <xExpression>  The result of the evaluated code block
   $DESCRIPTION$
      This function evaluates the code bloc expressed as <bBlock> and
      returns its evaluated value. If their are multiple expressions within
      the code block, the last expression will be value of this function.

      If the code block requires parameters to be passed to it, they are
      specified in the parameter list <xVal> and following. Each parameter
      is separated by a comma within the expression list.
   $EXAMPLES$
      LOCAL bBlock := {|| NIL }
      ? Eval( 1 )
      ? Eval( @bBlock )

      ? Eval( {| p1 | p1 }, "A", "B" )
      ? Eval( {| p1, p2 | p1 + p2 }, "A", "B" )
      ? Eval( {| p1, p2, p3 | p1 }, "A", "B" )
   $STATUS$
      R
   $COMPLIANCE$
      C
   $PLATFORMS$
      All
   $FILES$
      Library is core
   $SEEALSO$
      AEval(), dbEval()
   $END$
 */
