Вот, изучая тикль, наваял тут такой скрипт:
set example {a b {ca cb cc} {da {dba dbb} dc {dda ddb ddc}}}
proc insertAtDepth {listtarget listtoinsert depth} { if {$depth == 1} { return [concat $listtarget $listtoinsert] } return [lappend [subtract $listtarget] [insertAtDepth [pop $listtarget] $listtoinsert [expr $depth - 1]]] }
proc pop {listarg} { return [lindex $listarg end] }
proc subtract {listarg} { return [lrange $listarg 0 end-1] }
puts [insertAtDepth $example f 2]
По идее, insertAtDepth должна приписывать к последнему элементу списка, который находится на глубине вложенности depth, свой второй аргумент. Однако, работает она не так, как ожидается: почему-то в рекурсии теряется начало списка :(
Помогите, плз, понять -- в чем тут проблема.