Deutsch   English   Français   Italiano  
<v5llnh$37llc$1@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: aotto1968 <aotto1968@t-online.de>
Newsgroups: comp.lang.tcl
Subject: where is the TCL "macro" command ?
Date: Fri, 28 Jun 2024 08:37:37 +0200
Organization: A noiseless patient Spider
Lines: 35
Message-ID: <v5llnh$37llc$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Fri, 28 Jun 2024 08:37:38 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="c76961bfecfe5181df2c9568727b09d5";
	logging-data="3397292"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX19i1+B+BTSOmKG5+ojly58fOLEEnfvqi4M="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:tsUvt2TC50h0MZtBJ0rbf9ryWrY=
Content-Language: en-US
Bytes: 1692

Hi, the following code is ugly:

   proc block {args} {
     set code [lindex $args end]
     set args [lrange $args 0 end-1]
     foreach {var val} $args {
       uplevel [list push $var $val]
     }
     uplevel $code
     foreach {var val} $args {
       uplevel [list pop $var]
     }
   }

I want to have

   macro block {args} {
     local code var val
     set code [lindex $args end]
     set args [lrange $args 0 end-1]
     foreach {var val} $args {
       push $var $val
     }
     eval $code
     foreach {var val} $args {
       pop $var
     }
   }

the "macro" command evaluate the code IN the Frame of the calling "proc"
arguments and "local" declared variables are local, all other variables
are always in the frame of the calling "proc"


mfg