#module
#deffunc _func var _val, var _A
_A = _val
return
#define global func(%1, %2) val = %1 : _func val, %2
#global
func 1, A
mes A
諦めて命令にしてしまうのが一番無難な気がしますが…
どうしても関数の形にしたいなら
#module
#defcfunc _func str _val, int _A
if _A = vartype("int") : return int(_val)
if _A = vartype("double") : return double(_val)
if _A = vartype("str") : return str(_val)
return
#define global ctype func(%1, %2) _func(str(%1), vartype(%2))
#global
A = func("a", "str")
mes A
のように型をこっちで指定してみたりとか、
#module
#defcfunc _func str _val
if str(_val) ! double(_val) : return str(_val)
if str(double(_val)) ! int(_val) : return double(_val)
return int(_val)
#define global ctype func(%1) _func(str(%1))
#global
A = func(1.4)
mes A
自動で型を判別させて見たりとか…ぐらいしか思いつきません。