Я пытаюсь найти декартово произведение двух множеств в tcl. Моя логика готова, но мне нужно украсить вывод и поставить открывающую скобку в начале списка. Я могу добавить в конец с помощью команды append, но при этом возникает ошибка для начала списка. Ниже приведен код:
set a {0 1}
set b {1 2 3}
set s {}
append s "\{" ### this is where the problem is
for {set i 0} { $i < 2 } {incr i} {
for {set j $i} { $j < 2 } {incr j} {
set x "([lindex $a $i],[lindex $b $j])"
lappend s "$x,"
}
if {$j == 2} {
set x "([lindex $a $i],[lindex $b $j])"
lappend s "$x"
}
}
append s }
puts $s
Теперь используя
append s "\{"
дает
unmatched open brace in list
С другой стороны, используя
append s "\\{"
дает следующий вывод:
\{ (0,1), (0,2), (0,3) (1,2), (1,3)}
Есть ли способ удалить первую косую черту и пробел между открывающей фигурной скобкой и первой скобкой?
append
, а не команду списка, такую какlappend
. Это позволяет избежать волшебного цитирования при печати результата. - person Schelte Bron   schedule 16.03.2021puts "{[join $s]}"
- person Schelte Bron   schedule 16.03.2021