Tcl 调用最大值
Tcl calling maxima
如何在tcl中发送和接收来自外部程序的数据?我试试这个:
set d exec maxima --batch-string='5+10;'
puts d;
但是没有用。我需要从 tcl 调用 Maxima(http://maxima.sourceforge.net/index.html) 并在 tcl maxima 结果中调用 return 。官方文档是空的或非常旧,示例不起作用。
我猜你最好不要打这样的电话:
set theBatchString "5+10;"
set d [exec maxima --batch-string=$theBatchString]
puts $d
为了清楚起见,我将批处理字符串拆分为它自己的变量,请记住,单引号实际上对 Tcl 没有任何意义;他们是 shell 主义。 Tcl 使用不同的语法。
我已经编写了 maxima_call
函数来轻松调用 Maxima。您需要在 maxima_path
变量中设置您自己的 Maxima 程序路径。在 Linux 上可能是 set maxima_path maxima
proc maxima_call {expression} {
set maxima_path "M:\Programs\maxima-5.40.0\bin\maxima.bat"
set keys ""
# set keys "display2d:false$"
set result [split [exec ${maxima_path} --batch-string=${keys}${expression}\;] \n]
set result [lreplace $result 0 4]
return [join $result \n]
}
puts [maxima_call "5+10"]
但是我不太清楚你打算如何解析计算结果。例如,我从 Maxima 获得了这个输出。
set expression "\[aa : 1, bb : 2, cc : 3\]; (aa + bb + cc)/(dd + ee)"
puts [maxima_call $expression]
>
(%i1) [aa:1,bb:2,cc:3]
(%o1) [1, 2, 3]
(%i2) (aa+bb+cc)/(dd+ee)
6
(%o2) -------
ee + dd
如何在tcl中发送和接收来自外部程序的数据?我试试这个:
set d exec maxima --batch-string='5+10;'
puts d;
但是没有用。我需要从 tcl 调用 Maxima(http://maxima.sourceforge.net/index.html) 并在 tcl maxima 结果中调用 return 。官方文档是空的或非常旧,示例不起作用。
我猜你最好不要打这样的电话:
set theBatchString "5+10;"
set d [exec maxima --batch-string=$theBatchString]
puts $d
为了清楚起见,我将批处理字符串拆分为它自己的变量,请记住,单引号实际上对 Tcl 没有任何意义;他们是 shell 主义。 Tcl 使用不同的语法。
我已经编写了 maxima_call
函数来轻松调用 Maxima。您需要在 maxima_path
变量中设置您自己的 Maxima 程序路径。在 Linux 上可能是 set maxima_path maxima
proc maxima_call {expression} {
set maxima_path "M:\Programs\maxima-5.40.0\bin\maxima.bat"
set keys ""
# set keys "display2d:false$"
set result [split [exec ${maxima_path} --batch-string=${keys}${expression}\;] \n]
set result [lreplace $result 0 4]
return [join $result \n]
}
puts [maxima_call "5+10"]
但是我不太清楚你打算如何解析计算结果。例如,我从 Maxima 获得了这个输出。
set expression "\[aa : 1, bb : 2, cc : 3\]; (aa + bb + cc)/(dd + ee)"
puts [maxima_call $expression]
>
(%i1) [aa:1,bb:2,cc:3]
(%o1) [1, 2, 3]
(%i2) (aa+bb+cc)/(dd+ee)
6
(%o2) -------
ee + dd