【发布时间】:2017-07-04 16:43:08
【问题描述】:
我正在尝试将字符串与 SML 中的字符列表进行比较,使用 REPL 我有这个:
val alphabet = "abcdefghijklmnopqrstuvwxyz";
val charalphabet = explode alphabet;
val str = "the quick brown fox";
val res = Char.contains(str, charalphabet);
这会引发错误,因为我正在尝试将字符串与 Charlist 进行比较,并且 contains 仅将字符串与单个 Char 进行比较。有谁知道如何解决这个问题?我可以分解 String str 并比较 Char 列表,但是我不确定它们是否是一个函数。因此,如果有人对我可以阅读的函数或内容有任何想法,请告诉我,目标是查看字符串是否包含每个定义的字符列表。
我对 SML 非常陌生,因此非常感谢任何帮助!
【问题讨论】:
-
您的字母表中缺少
wxyz有什么原因吗?无论如何:提示 1:List.all很有用。提示 2:Char.contains str是char -> bool类型的函数。 -
我编辑了帖子,缺少的“wxyz”是我的错字。我将研究你刚才提到的两件事。我今天早些时候的函数是: fun isPangram c = if Char.contains(c, charalphabet) then true else false;即使它不工作,是否在正确的轨道上?
-
是的,从某种意义上说,
Char.contains是该工作的自然工具,并且您知道当前代码存在什么问题,因此它走在了正确的轨道上。但请注意,Char.contains是一个柯里化函数,因此像这样在输入周围加上括号是不正确的,因此除了 char 与 char 列表问题之外,您还有另一个问题。 -
我认为放括号是无关紧要的,是出于审美目的,但我想我错了。那么是否可以定义我自己的 contains 函数来检查字符串是否包含字母表中的所有字符,如果包含则返回 true?
-
是的,你可以定义你想要的,但是有一个使用 List.all 和 Char.contains 的 1 行定义。
标签: string function contains sml string-comparison