当我启动SML REPL并输入
时print("floor is : " ^ (Int.toString (floor 3.1823)) ^ "\n");
我得到了
floor is : 3
val it = () : unit
即预期的行为。但是当我在Emacs org-mode源块中执行相同的操作时:
#+name: sml_test
#+begin_src sml :exports both
print("floor is : " ^ (Int.toString (floor 3.1823)) ^ "\n");
#+end_src
我得到了神秘的(对我而言)
#+RESULTS: sml_test
: val it = "stdIn" : string
ML世界的任何人都知道这可能意味着什么吗?
答案 0 :(得分:3)
这可能是ob-sml中的一个错误。如果您访问* sml *缓冲区,并在源块上执行C-c C-c,则sml REPL将获得此输入:
print("floor is : " ^ (Int.toString (floor 3.1823)) ^ "\n");
; "stdIn";
注意额外的" stdIn"那里。此外,如果你在块上设置:results output
,你应该获得块的标准输出,但是我得到与默认:results value
设置相同的东西(和你得到的相同:神秘的东西)我猜这是假的结果" stdIn" - 我应该说我对ML一无所知,所以用适当大小的盐来研究所有这些。我会在ob-sml github项目上打开一个问题。