1
比較兩個字符串和字符串添加到列表中,如果他們平等的,我使用內置的比較功能創造了這個功能比較字符串給出錯誤。我猜我的語法一定是錯的,我是否正確使用了比較函數?使用「比較」功能
根據該文件,比較功能的工作原理如下:
比較(S,T)不使用的字符排序
Char.compare
兩個字符串的字典比較。如果s分別小於,等於或大於t,則它返回LESS
,EQUAL
或GREATER
。
比較兩個字符串和字符串添加到列表中,如果他們平等的,我使用內置的比較功能創造了這個功能比較字符串給出錯誤。我猜我的語法一定是錯的,我是否正確使用了比較函數?使用「比較」功能
根據該文件,比較功能的工作原理如下:
比較(S,T)不使用的字符排序
Char.compare
兩個字符串的字典比較。如果s分別小於,等於或大於t,則它返回LESS
,EQUAL
或GREATER
。
你所忘記的是否則...的IF-THEN-ELSE一部分。這部分是強制性的。
您可能要特別使用功能String.compare
。
如果您只關心平等的情況,您可以簡單地使用=
運算符。
名稱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