{VERSION 2 3 "IBM INTEL NT" "2.3" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 1 0 0 0 0 }{CSTYLE "2D Math" -1 2 "Times" 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 }{CSTYLE "Hyperlink" -1 17 "" 0 1 0 128 128 1 0 0 1 0 0 0 0 0 0 } {CSTYLE "2D Output" 2 20 "" 0 1 0 0 255 1 0 0 0 0 0 0 0 0 0 }{CSTYLE " " 0 21 "" 0 1 0 0 0 1 0 0 0 0 2 0 0 0 0 }{CSTYLE "Help Heading" -1 26 "" 1 14 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 256 "Times" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }{PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Maple Output" 0 11 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 3 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }} {SECT 0 {SECT 0 {PARA 0 "" 0 "" {TEXT 26 7 "Advice:" }{TEXT -1 46 " Lo cal procedures don't access local variables" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 57 "A procedure can define other pr ocedures inside it (using " }{MPLTEXT 0 21 4 "proc" }{TEXT -1 4 " or \+ " }{MPLTEXT 0 21 2 "->" }{TEXT -1 208 "), but these are quite differen t from local procedures in most programming languages. In particular, they do not have access to the local variables and formal parameters \+ of the first procedure. For example:" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 95 " f:= proc(x) local y, g;\n y:= a;\n g := t -> x + y + t;\n g(b);\n end;" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 5 "f(c);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#,(%\"x G\"\"\"%\"yGF%%\"bGF%" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 4 "The " }{MPLTEXT 0 21 1 "x" }{TEXT -1 5 " and " } {MPLTEXT 0 21 1 "y" }{TEXT -1 23 " in the definition of " }{MPLTEXT 0 21 1 "g" }{TEXT -1 26 " are the global variables " }{MPLTEXT 0 21 1 "x" }{MPLTEXT 1 0 0 "" }{TEXT -1 5 " and " }{MPLTEXT 0 21 1 "y" } {TEXT -1 27 ", not the formal parameter " }{MPLTEXT 0 21 0 "" }{TEXT -1 1 " " }{MPLTEXT 0 21 1 "x" }{TEXT -1 19 " or local variable " } {MPLTEXT 0 21 1 "y" }{TEXT -1 5 " of " }{MPLTEXT 0 21 1 "f" }{TEXT -1 1 "." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 22 "You can, however, use " }{MPLTEXT 0 21 4 "subs" }{TEXT -1 89 " to \+ define a procedure that uses the values of the formal parameters and l ocal variables:" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 116 "f:= proc (x) local y, g;\n y:= a;\n g:= subs(_X=x, _Y=y, (t -> \+ _X + _Y + t));\n g(b);\n end;" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 5 "f(c);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#,(%\"cG\"\" \"%\"aGF%%\"bGF%" }}}{PARA 0 "" 0 "" {TEXT -1 75 "\nThis page does not apply to Release 5, in which Maple has lexical scoping." }}}{SECT 0 {PARA 0 "" 0 "" {TEXT 26 9 "See also:" }{TEXT -1 1 " " }{HYPERLNK 17 " procedures" 2 "procedures" "" }}}{SECT 0 {PARA 0 "" 0 "" {TEXT 26 22 " Maple Advisor Database" }{TEXT 256 18 " R. Israel, 1997" }}}}{MARK " 0 0 1" 46 }{VIEWOPTS 1 1 0 1 1 1803 }