SSブログ

SML# 0.20 から Tcl を呼ぶ [SML]

SML# 0.20 [1] が Windows バイナリで配布されるようになったと聞いて試してみた。しかも FFI が強力らしいので Tcl のコマンドを解釈してみた。

G:\>smlsharp
SML# 0.20 (2007-03-30 10:47:08 JST)
# open DynamicLink;
open DynamicLink
# val tcl = dlopen "C:\\Tcl\\bin\\tcl84.dll";
val tcl = 0x10000000 : unit ptr
# val Tcl_CreateInterp = dlsym (tcl, "Tcl_CreateInterp") : _import () -> unit ptr;
val Tcl_CreateInterp = fn : unit  -> unit ptr
# val Tcl_Eval = dlsym (tcl, "Tcl_Eval") : _import (unit ptr, string) -> int;
val Tcl_Eval = fn : unit ptr * string  -> int
# val Tcl_GetStringResult = dlsym (tcl, "Tcl_GetStringResult") : _import unit ptr -> UnmanagedString.unmanagedString;
val Tcl_GetStringResult = fn : unit ptr  -> UnmanagedString.unmanagedString
# val interp = Tcl_CreateInterp ();
val interp = 0x06892d38 : unit ptr
# Tcl_Eval (interp, "puts {Hello World}");
Hello World
val it = 0 : int
# Tcl_Eval (interp, "puts xxx {Hello World}");
val it = 1 : int
# Tcl_GetStringResult interp;
val it = 0x06892e50 : UnmanagedString.unmanagedString
# UnmanagedString.import it;
val it = "can not find channel named \"xxx\"" : string
#

すばらしい。ネイティブコンパイラが完成したら OCaml より便利かもしれない。

[1] http://www.pllab.riec.tohoku.ac.jp/smlsharp/ja/


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

Array#index と String..Parse::RecDescent で .. ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。