As you may have noticed I was exploring eval recently.
Guy Decoux gave me a lot of help, so I decided to try to document
what I had learned.  When it came to doing this it turns out that
I had not fully understood the extra features of eval, so he helped
me out a lot more.  So most of the information in here is his work,
but the wording is mine. 

These patches are suggested to improve the documentation of eval
in 1.4.

	Thank you,
	Hugh
	hgs / dmu.ac.uk


--- ruby-man-1.4/function.html.orig	Tue Mar 14 14:48:25 2000
+++ ruby-man-1.4/function.html	Wed Aug 23 17:49:28 2000
@@ -135,7 +135,8 @@
 <DD>
 <p>
 Returns the data structure of the variable/method binding,
-which can be used for the second argument of the <code>eval</code>.
+which can be used for the second argument of the
+<A HREF="#eval"><code>eval</code></A>.
 </p>
 
 <DT><A NAME="caller"><CODE>caller([<VAR>level</VAR>])</CODE></A>
@@ -207,15 +208,30 @@
 <code>$_</code>.  See String#chomp.
 </p>
 
-<DT><A NAME="eval"><CODE>eval(<VAR>expr</VAR>[, <var>binding</var>])</CODE></A>
+<DT><A NAME="eval"><CODE>eval(<VAR>expr</VAR>[, <var>binding</var>[, <var>filetag</var>[, <VAR>lineno</VAR>]]])</CODE></A>
 <DD>
 <p>
 Evaluate <VAR>expr</VAR> as a Ruby program.  If the
-<code>Proc</code> object or the binding data from
+<code>Proc</code> object or the binding data from
 <code>binding</code> is given to the optional 
 second argument, the string is compiled and evaluated under
 its binding environment.
 </p>
+<P>
+When the <var>expr</var> contains nested methods, it is
+useful to have better traceback information than simply
+citing the <CODE>eval</CODE> and a line number.  The
+<VAR>filetag</VAR> provides this in two ways.  If it
+is left as the default 
+(which is <CODE>"(eval)"</CODE>) then there is no traceback into the
+nested methods.  If it is set to anything else then there is
+full traceback information, and also the tag in the error message
+is changed to this value.
+</P>
+<P>
+The <VAR>lineno</VAR> defaults to 1, and is used as the starting
+line number of <VAR>expr</VAR> when producing any error messages.
+</P>
 
 <DT><A NAME="exec"><CODE>exec(<VAR>command</VAR>...)</CODE></A>
 <DD>