annotate doc/interpreter/eval.txi @ 30564:796f54d4ddbf stable

update Octave Project Developers copyright for the new year In files that have the "Octave Project Developers" copyright notice, update for 2021. In all .txi and .texi files except gpl.txi and gpl.texi in the doc/liboctave and doc/interpreter directories, change the copyright to "Octave Project Developers", the same as used for other source files. Update copyright notices for 2022 (not done since 2019). For gpl.txi and gpl.texi, change the copyright notice to be "Free Software Foundation, Inc." and leave the date at 2007 only because this file only contains the text of the GPL, not anything created by the Octave Project Developers. Add Paul Thomas to contributors.in.
author John W. Eaton <jwe@octave.org>
date Tue, 28 Dec 2021 18:22:40 -0500
parents 00f796120a6d
children 597f3ee61a48
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
30564
796f54d4ddbf update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 26376
diff changeset
1 @c Copyright (C) 1996-2022 The Octave Project Developers
7018
fd42779a8428 [project @ 2007-10-13 00:52:12 by jwe]
jwe
parents: 7001
diff changeset
2 @c
fd42779a8428 [project @ 2007-10-13 00:52:12 by jwe]
jwe
parents: 7001
diff changeset
3 @c This file is part of Octave.
fd42779a8428 [project @ 2007-10-13 00:52:12 by jwe]
jwe
parents: 7001
diff changeset
4 @c
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 23220
diff changeset
5 @c Octave is free software: you can redistribute it and/or modify it
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22323
diff changeset
6 @c under the terms of the GNU General Public License as published by
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 23220
diff changeset
7 @c the Free Software Foundation, either version 3 of the License, or
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22323
diff changeset
8 @c (at your option) any later version.
19593
446c46af4b42 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 17744
diff changeset
9 @c
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22323
diff changeset
10 @c Octave is distributed in the hope that it will be useful, but
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22323
diff changeset
11 @c WITHOUT ANY WARRANTY; without even the implied warranty of
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22323
diff changeset
12 @c MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22323
diff changeset
13 @c GNU General Public License for more details.
19593
446c46af4b42 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 17744
diff changeset
14 @c
7018
fd42779a8428 [project @ 2007-10-13 00:52:12 by jwe]
jwe
parents: 7001
diff changeset
15 @c You should have received a copy of the GNU General Public License
fd42779a8428 [project @ 2007-10-13 00:52:12 by jwe]
jwe
parents: 7001
diff changeset
16 @c along with Octave; see the file COPYING. If not, see
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 23220
diff changeset
17 @c <https://www.gnu.org/licenses/>.
3294
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
18
4167
aae05d51353c [project @ 2002-11-12 02:52:50 by jwe]
jwe
parents: 3371
diff changeset
19 @node Evaluation
3294
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
20 @chapter Evaluation
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
21
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
22 Normally, you evaluate expressions simply by typing them at the Octave
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
23 prompt, or by asking Octave to interpret commands that you have saved in
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
24 a file.
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
25
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
26 Sometimes, you may find it necessary to evaluate an expression that has
6641
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
27 been computed and stored in a string, which is exactly what the
8347
fa78cb8d8a5c corrections for typos
Brian Gough<bjg@network-theory.co.uk>
parents: 7018
diff changeset
28 @code{eval} function lets you do.
3294
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
29
3371
86873384cd10 [project @ 1999-11-21 17:31:07 by jwe]
jwe
parents: 3294
diff changeset
30 @DOCSTRING(eval)
3294
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
31
21075
5ed379c8decd Add new function evalc to core.
Oliver Heimlich <oheim@posteo.de>
parents: 19697
diff changeset
32 The @code{evalc} function additionally captures any console output
5ed379c8decd Add new function evalc to core.
Oliver Heimlich <oheim@posteo.de>
parents: 19697
diff changeset
33 produced by the evaluated expression.
5ed379c8decd Add new function evalc to core.
Oliver Heimlich <oheim@posteo.de>
parents: 19697
diff changeset
34
5ed379c8decd Add new function evalc to core.
Oliver Heimlich <oheim@posteo.de>
parents: 19697
diff changeset
35 @DOCSTRING(evalc)
5ed379c8decd Add new function evalc to core.
Oliver Heimlich <oheim@posteo.de>
parents: 19697
diff changeset
36
6641
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
37 @menu
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
38 * Calling a Function by its Name::
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
39 * Evaluation in a Different Context::
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
40 @end menu
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
41
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
42 @node Calling a Function by its Name
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
43 @section Calling a Function by its Name
3294
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
44
7001
8b0cfeb06365 [project @ 2007-10-10 18:02:59 by jwe]
jwe
parents: 6863
diff changeset
45 The @code{feval} function allows you to call a function from a string
9037
4cb9f994dcec Documentation cleanup of var.texi, expr.texi, eval.texi
Rik <rdrider0-list@yahoo.com>
parents: 8920
diff changeset
46 containing its name. This is useful when writing a function that needs to
4cb9f994dcec Documentation cleanup of var.texi, expr.texi, eval.texi
Rik <rdrider0-list@yahoo.com>
parents: 8920
diff changeset
47 call user-supplied functions. The @code{feval} function takes the name
19593
446c46af4b42 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 17744
diff changeset
48 of the function to call as its first argument, and the remaining
6641
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
49 arguments are given to the function.
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
50
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
51 The following example is a simple-minded function using @code{feval}
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
52 that finds the root of a user-supplied function of one variable using
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
53 Newton's method.
3294
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
54
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
55 @example
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
56 function result = newtroot (fname, x)
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
57
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
58 # usage: newtroot (fname, x)
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
59 #
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
60 # fname : a string naming a function f(x).
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
61 # x : initial guess
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
62
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
63 delta = tol = sqrt (eps);
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
64 maxit = 200;
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
65 fx = feval (fname, x);
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
66 for i = 1:maxit
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
67 if (abs (fx) < tol)
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
68 result = x;
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
69 return;
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
70 else
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
71 fx_new = feval (fname, x + delta);
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
72 deriv = (fx_new - fx) / delta;
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
73 x = x - fx / deriv;
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
74 fx = fx_new;
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
75 endif
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
76 endfor
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
77
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
78 result = x;
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
79
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
80 endfunction
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
81 @end example
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
82
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
83 Note that this is only meant to be an example of calling user-supplied
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
84 functions and should not be taken too seriously. In addition to using a
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
85 more robust algorithm, any serious code would check the number and type
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
86 of all the arguments, ensure that the supplied function really was a
17097
e7a059a9a644 doc: Use XREF as anchor prefix in documentation for clearer results in Info viewer.
Rik <rik@octave.org>
parents: 14856
diff changeset
87 function, etc. @xref{Predicates for Numeric Objects},
e7a059a9a644 doc: Use XREF as anchor prefix in documentation for clearer results in Info viewer.
Rik <rik@octave.org>
parents: 14856
diff changeset
88 for a list of predicates for numeric objects, and @pxref{Status of
3294
bfe1573bd2ae [project @ 1999-10-19 10:06:07 by jwe]
jwe
parents:
diff changeset
89 Variables}, for a description of the @code{exist} function.
6549
5a5a09d7deb8 [project @ 2007-04-20 06:55:29 by jwe]
jwe
parents: 4463
diff changeset
90
6641
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
91 @DOCSTRING(feval)
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
92
6863
3c64128e621c [project @ 2007-09-05 07:52:48 by dbateman]
dbateman
parents: 6778
diff changeset
93 A similar function @code{run} exists for calling user script files, that
3c64128e621c [project @ 2007-09-05 07:52:48 by dbateman]
dbateman
parents: 6778
diff changeset
94 are not necessarily on the user path
3c64128e621c [project @ 2007-09-05 07:52:48 by dbateman]
dbateman
parents: 6778
diff changeset
95
3c64128e621c [project @ 2007-09-05 07:52:48 by dbateman]
dbateman
parents: 6778
diff changeset
96 @DOCSTRING(run)
3c64128e621c [project @ 2007-09-05 07:52:48 by dbateman]
dbateman
parents: 6778
diff changeset
97
6641
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
98 @node Evaluation in a Different Context
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
99 @section Evaluation in a Different Context
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
100
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
101 Before you evaluate an expression you need to substitute
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
102 the values of the variables used in the expression. These
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
103 are stored in the symbol table. Whenever the interpreter
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
104 starts a new function it saves the current symbol table
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
105 and creates a new one, initializing it with the list of
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
106 function parameters and a couple of predefined variables
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
107 such as @code{nargin}. Expressions inside the function use the
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
108 new symbol table.
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
109
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
110 Sometimes you want to write a function so that when you
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
111 call it, it modifies variables in your own context. This
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
112 allows you to use a pass-by-name style of function,
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
113 which is similar to using a pointer in programming languages such
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
114 as C.
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
115
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
116 Consider how you might write @code{save} and @code{load} as
10828
322f43e0e170 Grammarcheck .txi documentation files.
Rik <octave@nomad.inbox5.com>
parents: 9209
diff changeset
117 m-files. For example:
6641
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
118
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
119 @example
9209
923c7cb7f13f Simplify TeXinfo files by eliminating redundant @iftex followed by @tex construction.
Rik <rdrider0-list@yahoo.com>
parents: 9037
diff changeset
120 @group
6641
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
121 function create_data
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
122 x = linspace (0, 10, 10);
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
123 y = sin (x);
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
124 save mydata x y
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
125 endfunction
9209
923c7cb7f13f Simplify TeXinfo files by eliminating redundant @iftex followed by @tex construction.
Rik <rdrider0-list@yahoo.com>
parents: 9037
diff changeset
126 @end group
6641
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
127 @end example
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
128
8828
8463d1a2e544 Doc fixes.
Brian Gough <bjg@network-theory.co.uk>
parents: 8481
diff changeset
129 With @code{evalin}, you could write @code{save} as follows:
6641
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
130
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
131 @example
9209
923c7cb7f13f Simplify TeXinfo files by eliminating redundant @iftex followed by @tex construction.
Rik <rdrider0-list@yahoo.com>
parents: 9037
diff changeset
132 @group
6641
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
133 function save (file, name1, name2)
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
134 f = open_save_file (file);
14856
c3fd61c59e9c maint: Use Octave coding conventions for cuddling parentheses in doc directory
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
135 save_var (f, name1, evalin ("caller", name1));
c3fd61c59e9c maint: Use Octave coding conventions for cuddling parentheses in doc directory
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
136 save_var (f, name2, evalin ("caller", name2));
6641
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
137 endfunction
9209
923c7cb7f13f Simplify TeXinfo files by eliminating redundant @iftex followed by @tex construction.
Rik <rdrider0-list@yahoo.com>
parents: 9037
diff changeset
138 @end group
6641
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
139 @end example
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
140
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
141 @noindent
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
142 Here, @samp{caller} is the @code{create_data} function and @code{name1}
17281
bc924baa2c4e doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents: 17097
diff changeset
143 is the string @qcode{"x"}, which evaluates simply as the value of @code{x}.
6641
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
144
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
145 You later want to load the values back from @code{mydata}
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
146 in a different context:
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
147
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
148 @example
9209
923c7cb7f13f Simplify TeXinfo files by eliminating redundant @iftex followed by @tex construction.
Rik <rdrider0-list@yahoo.com>
parents: 9037
diff changeset
149 @group
6641
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
150 function process_data
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
151 load mydata
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
152 @dots{} do work @dots{}
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
153 endfunction
9209
923c7cb7f13f Simplify TeXinfo files by eliminating redundant @iftex followed by @tex construction.
Rik <rdrider0-list@yahoo.com>
parents: 9037
diff changeset
154 @end group
6641
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
155 @end example
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
156
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
157 @noindent
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
158 With @code{assignin}, you could write @code{load} as follows:
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
159
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
160 @example
9209
923c7cb7f13f Simplify TeXinfo files by eliminating redundant @iftex followed by @tex construction.
Rik <rdrider0-list@yahoo.com>
parents: 9037
diff changeset
161 @group
6641
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
162 function load (file)
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
163 f = open_load_file (file);
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
164 [name, val] = load_var (f);
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
165 assignin ("caller", name, val);
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
166 [name, val] = load_var (f);
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
167 assignin ("caller", name, val);
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
168 endfunction
9209
923c7cb7f13f Simplify TeXinfo files by eliminating redundant @iftex followed by @tex construction.
Rik <rdrider0-list@yahoo.com>
parents: 9037
diff changeset
169 @end group
6641
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
170 @end example
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
171
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
172 @noindent
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
173 Here, @samp{caller} is the @code{process_data} function.
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
174
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
175 You can set and use variables at the command prompt
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
176 using the context @samp{base} rather than @samp{caller}.
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
177
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
178 These functions are rarely used in practice. One
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
179 example is the @code{fail (@samp{code}, @samp{pattern})} function
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
180 which evaluates @samp{code} in the caller's context and
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
181 checks that the error message it produces matches
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
182 the given pattern. Other examples such as @code{save} and @code{load}
8481
00df69d7e698 [docs] capitalize Octave consistently
Brian Gough <bjg@gnu.org>
parents: 8347
diff changeset
183 are written in C++ where all Octave variables
6641
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
184 are in the @samp{caller} context and @code{evalin} is not needed.
27ec13d8499b [project @ 2007-05-21 19:53:58 by jwe]
jwe
parents: 6549
diff changeset
185
6549
5a5a09d7deb8 [project @ 2007-04-20 06:55:29 by jwe]
jwe
parents: 4463
diff changeset
186 @DOCSTRING(evalin)
5a5a09d7deb8 [project @ 2007-04-20 06:55:29 by jwe]
jwe
parents: 4463
diff changeset
187
5a5a09d7deb8 [project @ 2007-04-20 06:55:29 by jwe]
jwe
parents: 4463
diff changeset
188 @DOCSTRING(assignin)