私はSMLで書いたpythonファイルから関数を呼び出そうとしています。私はタイコンのミスマッチのエラーを受けています。なぜ私は理解できません。SML内のPython関数を呼び出す
def interpreter(input, output):
x = Interpreter()
x.interpreter(input, output)
私はSMLで書いたpythonファイルから関数を呼び出そうとしています。私はタイコンのミスマッチのエラーを受けています。なぜ私は理解できません。SML内のPython関数を呼び出す
def interpreter(input, output):
x = Interpreter()
x.interpreter(input, output)
コンパイラがしようとしている:これは私のSMLコード
fun interpreter(inFile: string, outFile: string)=
let
val s = interpreter(inFile, outFile)
in
OS.Process.system ("python interpreter.py"^s)
end;
そして、これは私が
- use "in.sml";
[opening in.sml]
in.sml:1.6-6.6 Error: right-hand-side of clause doesn't agree with function result type [tycon mismatch]
expression: ?.OS_Process.status
result type: string
in declaration:
interpreter =
(fn (<pat> : string,<pat> : string) =>
let val <binding> in OS.Process.system <exp> end)
val it =() : unit
これは私が呼んしようとしているのpythonでの方法であるを受けていますエラーです再帰的に呼び出すinterpreter
の結果/戻り値のタイプをval s = interpreter(inFile, outFile)
と調整します。コンパイラはでなければならないと考えています。^
と連結していますが、OS.Process.system ("python interpreter.py"^s)
によって返される値を返す関数の本体は?.OS_Process.status
である必要があります。
それでは、SML関数から受け取った引数を使って、Pythonで関数を呼び出すにはどうしたらいいですか?私はちょうど 'OS.Process.system(" python interpreter.py ")'のように連結を取り除くだけでしょうか?そうすれば、smlプログラムはコンパイルして、この 'valインタプリタ= fn:string * string-> Word32.wordを返すことができます。val it =():unit'私のプログラムはPythonでテキストファイルを出力する必要があります。私は期待すべき出力? – arizq29
[SMLプログラムでPythonファイルを呼び出しますか?](http://stackoverflow.com/questions/43353918/call-a-python-file-in-a-sml-program)一度質問してください。 –
コードの区切りは、字下げではなく字下げでフォーマットしてください。テキストを選択して '{}'ボタンを押すと、通常は正しいことが実行されます。 – molbdnilo
評価はそれ自身の結果に依存するので、決して終了しません。 – molbdnilo