Sublime Text 3 smlnj REPL не печатает исключения - PullRequest
0 голосов
/ 10 октября 2018

Когда в коде возникает исключение, я не получаю ни сообщения, ни чего-либо вообще напечатанного.Например, следующий код:

fun test n = 
if n = 1
then raise Fail ("hey")
else 2

val t = test 1

Когда я набираю

- use "test.sml";

, вывод просто

[opening test.sml]
val it = () : unit

Я хотел бы напечатать, что исключение былоподнял и сообщение ("эй")

Любые идеи о том, как это исправить я использую smlnj 110,82

1 Ответ

0 голосов
/ 11 октября 2018

Потому что вы не обработали свое исключение.

Вам следует сделать следующее:

fun test n =
if n = 1
then raise Fail ("hey")
else 2

val t = test 1 handle Fail msg => 0;

[opening practice.sml]
val test = fn : int -> int
val t = 0 : int
val it = () : unit

, если вы надеетесь увидеть сообщение Fail msg на экране, просто используйте побочный эффект:

fun test n =
if n = 1
then raise Fail ("hey")
else 2

val t = test 1 handle Fail msg => (print (msg ^ "\n"); 0)

[opening practice.sml]
hey
val test = fn : int -> int
val t = 0 : int
val it = () : unit
...