2019-05-24

Tcl: 奇數和偶數

#!/usr/bin/env tclsh

puts -nonewline "Please input a number: "
flush stdout
gets stdin var
 
if { [ regexp {^[0-9]+$} $var ] == 0} {
    puts "It is not a number!!!"
    exit
}

if { [expr $var % 2] == 0} {
    puts "It is even!!!"
} else {
    puts "It is odd!!!"
}

也是一個很簡單的練習,只是使用正規表示式判斷是否為數字。

2019-05-21

Tcl:九九乘法表

這只是一個簡單的 Tcl 練習。

所以第一個是 for loop 的版本。
#!/usr/bin/env tclsh

for {set nx 0} {$nx < 10} {incr nx} {
    for {set ny 0} {$ny < 10} {incr ny} {
        puts "[format "%d x %d = %2d" $nx $ny [expr $nx  * $ny]]"
    }
} 

第二個版本是我在寫同樣的東西(也是九九乘法表),因為 Erlang 沒有 for 和 while 迴圈,所以我先建立一個 list,然後再使用 Erlang 提供的 lists:foreach 印出結果。我用同樣的精神寫 Tcl 九九乘法表的第二個版本(同時測試 mathop)。
#!/usr/bin/env tclsh

set x [list 1 2 3 4 5 6 7 8 9]
set y [list 1 2 3 4 5 6 7 8 9]

foreach nx $x {
    foreach ny $y {
        set z [::tcl::mathop::* $nx $ny]
        puts "[format "%d x %d = %2d" $nx $ny $z]"
    }
}

最後是遞迴的版本:
#!/usr/bin/env tclsh

namespace path {::tcl::mathop ::tcl::mathfunc}

proc mul {x y} {
    puts [format "%d x %d = %2d" $x $y [* $x $y]]
    if {$y < 9} {
        mul $x [+ $y 1]
    } else {
        if {$x < 9} {
            mul [+ $x 1] 1
        } else {
            return
        }
    }
}

mul 1 1

2019-05-13

Next Scripting Framework 2.3.0

ANNOUNCE: Next Scripting Framework 2.3.0 is available


NSF 釋出了 2.3.0,所以我更新了我自己的 openSUSE RPM spec, 這可以比較方便進行測試。我在下載的時候 SourceForge 似乎出現問題,所以無法順利下載,我把下載檔案的地址切到 NSF 在 Github 的 mirror

2019-05-09

Update tklib spec

tklib-spec


因為 tablelist 釋出了新版 v6.5,為了反應 tklib 最近的變化,所以更新了我自己的 openSUSE RPM spec,更新到目前的 code base。