Sml 使用';比较';功能
为了比较两个字符串,并将相等的字符串添加到列表中,我使用内置的比较函数创建了此函数:Sml 使用';比较';功能,sml,Sml,为了比较两个字符串,并将相等的字符串添加到列表中,我使用内置的比较函数创建了此函数: fun compareString(string, list) = if compare(string, "hello") = EQUAL then string::list; 然而,这给出了一个错误。我猜我的语法一定是错的,我是否正确使用了比较函数 根据文档,比较功能的工作原理如下: compare(s,t)使用排序Char对两个字符串进行词典比较。对字符进行比较。如果s分别小于、等于或大于t,则
fun compareString(string, list) =
if compare(string, "hello") = EQUAL then string::list;
然而,这给出了一个错误。我猜我的语法一定是错的,我是否正确使用了比较函数
根据文档,比较功能的工作原理如下:
compare(s,t)使用排序Char对两个字符串进行词典比较。对字符进行比较。如果s分别小于、等于或大于t,则返回LESS
、EQUAL
或GREATER
- 你忘记的是其他的。。。如果是,那么是。这部分是强制性的
- 您可能想使用函数
String。请具体比较
- 但是,如果您只关心相同的情况,则可以简单地使用
=
运算符
- 名称compareString是一个奇怪的名称,用于将字符串转换为列表的函数
- 名称字符串和列表也不是很好的变量名,因为它们不能描述变量的用途。如果函数是泛型的,那么泛型名称可能是合适的,您可以选择任何您喜欢的泛型名称方案
- 包含谓词(字符串必须等于
“hello”
)似乎有点愚蠢,因为您将确切地知道该列表的外观;它将同构于一个正整数。相反,如果将包含谓词设置为参数,则该函数实际上可能很有用
例如:
fun consIf (p, x, xs) =
if p x
then x :: xs
else xs
fun is_greeting x = List.exists (fn y => x = y) ["hello", "hi", "good day"]
val ys = consIf (is_greeting, "hello", ["hi"])
或者将其转换为二进制运算符,并将其命名为:?
,因为它类似于带有以下条件的:
:
infixr 5 ::?
fun x ::? xs = fn p => if p x then x::xs else xs
val ys = ("boaty mcboatface!" ::? ["hi"]) is_greeting