SML curried函数,该函数以列表和正数k作为输入,并检查其中是否有任何元素恰好出现k次。
编写一个以列表和正数n为输入的通用函数f1 并检查其中是否有任何元素恰好出现n次 例如-f1[1,2,1,3]2; val it=true:bool -f1[1,2,1,3]3;SML curried函数,该函数以列表和正数k作为输入,并检查其中是否有任何元素恰好出现k次。,sml,smlnj,Sml,Smlnj,编写一个以列表和正数n为输入的通用函数f1 并检查其中是否有任何元素恰好出现n次 例如-f1[1,2,1,3]2; val it=true:bool -f1[1,2,1,3]3; val it=false:bool您需要计算列表中每个元素的出现次数。您需要一个计算发生次数的函数,以及一个对照列表本身检查列表中每个元素的函数 fun isThereCeratinNumberOfOccurences(lst, count) = let fun countOccurences(
val it=false:bool您需要计算列表中每个元素的出现次数。您需要一个计算发生次数的函数,以及一个对照列表本身检查列表中每个元素的函数
fun isThereCeratinNumberOfOccurences(lst, count) =
let
fun countOccurences(lst, what) =
if null lst
then 0
else if hd lst = what
then 1 + countOccurences(tl lst,what)
else countOccurences(tl lst,what)
fun checkEachElement(lst, elements, number) =
if null elements
then false
else if countOccurences(lst, hd elements) = count
then true
else checkEachElement(lst, tl elements, count)
in
checkEachElement(lst, lst, count)
end
让我们看看你已经试过了什么。我们这里不做家庭作业。fun f1(ls,k)=如果ls=[],那么如果else f1(tl(hd(ls))=[hd(ls)],那么val i=i+1;如果i=k,则为真,否则为假;我在这里要做的是检查列表的每一个头部,如果两个值相同,则在每一步后将其反转,然后将一个int增加1,最后检查该整数是否为k。如果它们相等,则返回true,否则返回false。