tailcall - Online Linux Manual PageSection : n
Updated : 8.6
Source : Tcl
Note : Tcl Built-In Commands


NAMEtailcall − Replace the current procedure with another command

SYNOPSIStailcall command ?arg ...? .\}

DESCRIPTIONThe tailcall command replaces the currently executing procedure, lambda application, or method with another command. The command, which will have arg ... passed as arguments if they are supplied, will be looked up in the current namespace context, not in the caller's. Apart from that difference in resolution, it is equivalent to: return [uplevel 1 [list command ?arg ...?]] This command may not be invoked from within an uplevel into a procedure or inside a catch inside a procedure or lambda.

EXAMPLECompute the factorial of a number. proc factorial {n {accum 1}} { if {$n < 2} { return $accum } tailcall factorial [expr {$n - 1}] [expr {$accum * $n}] } Print the elements of a list with alternating lines having different indentations. proc printList {theList} { if {[llength $theList]} { puts "> [lindex $theList 0]" tailcall printList2 [lrange $theList 1 end] } } proc printList2 {theList} { if {[llength $theList]} { puts "< [lindex $theList 0]" tailcall printList [lrange $theList 1 end] } }

SEE ALSOapply(n), proc(n), uplevel(n)

KEYWORDScall, recursion, tail recursion
0
Johanes Gumabo
Data Size   :   8,530 byte
man-tailcall.nBuild   :   2024-12-05, 20:55   :  
Visitor Screen   :   x
Visitor Counter ( page / site )   :   3 / 202,943
Visitor ID   :     :  
Visitor IP   :   13.58.211.135   :  
Visitor Provider   :   AMAZON-02   :  
Provider Position ( lat x lon )   :   39.962500 x -83.006100   :   x
Provider Accuracy Radius ( km )   :   1000   :  
Provider City   :   Columbus   :  
Provider Province   :   Ohio ,   :   ,
Provider Country   :   United States   :  
Provider Continent   :   North America   :  
Visitor Recorder   :   Version   :  
Visitor Recorder   :   Library   :  
Online Linux Manual Page   :   Version   :   Online Linux Manual Page - Fedora.40 - march=x86-64 - mtune=generic - 24.12.05
Online Linux Manual Page   :   Library   :   lib_c - 24.10.03 - march=x86-64 - mtune=generic - Fedora.40
Online Linux Manual Page   :   Library   :   lib_m - 24.10.03 - march=x86-64 - mtune=generic - Fedora.40
Data Base   :   Version   :   Online Linux Manual Page Database - 24.04.13 - march=x86-64 - mtune=generic - fedora-38
Data Base   :   Library   :   lib_c - 23.02.07 - march=x86-64 - mtune=generic - fedora.36

Very long time ago, I have the best tutor, Wenzel Svojanovsky . If someone knows the email address of Wenzel Svojanovsky , please send an email to johanes_gumabo@yahoo.co.id .
If error, please print screen and send to johanes_gumabo@yahoo.co.id
Under development. Support me via PayPal.

ERROR : Need New Coding :         (rof_escape_sequence_block|26|(null)|(null)|-1|140)         (parse_manual_page_|249|tailcall.n|282/140|══─}─══|.══─}─══ )         (htmlprn|149|tailcall.n|282/140|.══─}─══|.══─}─══ )         (rof_escape_sequence|91|tailcall.n|282/141|\}|.\} )         (parse_manual_page_|249|tailcall.n|282/141|\}|.\} )