我想编写一个示例程序,输入用户输入的两个数字,并在SML-NJ中输出它们的和作为输出。这两个数字应该是整数,每个整数将以新行给出。保证输入为整数类型,无需检查。我已经安装了SML-NJ编译器,我正在使用ml-build命令进行编译。
答案 0 :(得分:2)
由于您没有指定您想要输入的数字类型,如何从输入中提取数字,或者在发生任何错误时应该发生什么,我将假设整数,每行一个整数,如果发生任何错误,都不会发生任何事情。
fun getInt () =
(case TextIO.inputLine TextIO.stdIn of
NONE => NONE
| SOME s => (case Int.fromString s of
NONE => NONE
| SOME n => SOME n))
fun getTwoInts () =
(case getInt () of
NONE => NONE
| SOME i => (case getInt () of
NONE => NONE
| SOME j => SOME (i,j)))
fun sumAndPrintTwoInts () =
(case getTwoInts () of
NONE => ()
| SOME (i,j) => print (Int.toString (i+j)))
但是有很多方法可以构建这些功能。例如,
infix 3 >>=
fun NONE >>= _ = NONE
| (SOME a) >>= f = f a
fun getInt () =
TextIO.inputLine TextIO.stdIn >>= Int.fromString
fun getTwoInts () =
getInt () >>= (fn i =>
getInt () >>= (fn j => SOME (i,j)))
fun sumAndPrintTwoInts () =
getTwoInts () >>= (fn (i,j) => (print (Int.toString (i+j)); NONE))