Sto cercando un linguaggio che mi permetta di fare quello che potrei fare con Clipper anni fa, e che posso fare con Tcl, ovvero aggiungere funzionalità in un modo diverso dalla semplice aggiunta di funzioni.
Ad esempio in Clipper / (x) Harbor ci sono i comandi #command, #translate, #xcommand e #xtranslate che permettono cose come questa:
#xcommand REPEAT;
=> DO WHILE .T.
#xcommand UNTIL <cond>;
=> IF (<cond>);
;EXIT;
;ENDIF;
;ENDDO
LOCAL n := 1
REPEAT
n := n + 1
UNTIL n > 100
Allo stesso modo, in Tcl sto facendo
proc process_range {_for_ project _from_ dat1 _to_ dat2 _by_ slice} {
set fromDate [clock scan $dat1]
set toDate [clock scan $dat2]
if {$slice eq "day"} then {set incrementor [expr 24 * 60]}
if {$slice eq "hour"} then {set incrementor 60}
set method DateRange
puts "Scanning from [clock format $fromDate -format "%c"] to [clock format $toDate -format "%c"] by $slice"
for {set dateCursor $fromDate} {$dateCursor <= $toDate} {set dateCursor [clock add $dateCursor $incrementor minutes]} {
# ...
}
}
process_range for "client" from "2013-10-18 00:00" to "2013-10-20 23:59" by day
Esistono altri linguaggi che consentono questo tipo di modifica della sintassi, quasi COBOL-esque?
Se ti stai chiedendo perché lo sto chiedendo, è per l'impostazione di cose in modo che altre persone con uno skillset non-as-geek-as-I-am possano dichiarare attività di elaborazione.