【发布时间】:2020-08-18 22:56:10
【问题描述】:
我目前正在学习 SML/NJ,因为该程序主要使用 gui 进行基本输入,但 SML 输入用于高级选项。
我想比较一个字符串是否是另一个字符串的子字符串。
如果条件为真,则应“仅”返回完整字符串或将其分配给新变量。
出于测试目的,我使用了在线编译器,因为我从其他程序获得的反馈几乎为零。
相关代码片段:
fun SString(sub:string, str:string):string =
if isSubstring(sub, str) = TRUE then str
(* str should be returned , no errors*)
else val p2:string="nope";
(* no return or adjustable(fixed)return /without data*)
val p1 = "sender,time,data"
val p2 = "sender"
print(SString(p2,p1))
到目前为止,我被卡住了。
我的主要问题是:
我真的可以在函数中创建一个新变量吗?
在这种情况下,最佳做法是什么?
在一些在线文档中,我读到一旦分配一个变量就不可能再分配一个新值。
我的函数是否应该具有内部绑定和let decl in expr end *var的以下形式?
fun newstr:string(sub:string,str:string) =
let val n = isSubstring(sub,str)
in
end *sub
提前致谢
相关编译结果:
Standard ML of New Jersey v110.78 [built: Thu Aug 31 03:45:42 2017]
- stdIn:4.33-4.44 Error: syntax error: deleting ELSE VAL ID
- stdIn:4.52-4.61 Error: syntax error: deleting EQUALOP STRING SEMICOLON
附:我添加了合适的标签,请随意删除/调整它们
【问题讨论】:
-
谢谢 对 ML 的温和介绍是一个很好的参考。它似乎可以解决问题。我已经阅读了第二个,但这只是与省略部分代码结构混淆。
标签: string substring sml smlnj