我正在尝试解决SML中的练习;SML中的记录和元组有问题
写一个ML程序,用于包含10个问题的多选题考试。您的程序应包括以下内容:
o考试 的答案
val key= “adabcbaadb”;
o为包含学生姓名和答案的记录(信息)输入定义。 例如{name=”Ali”,ans=”abadccdadb”}
o为包含学生姓名和分数的元组(结果)类型定义。 例如("Ali",60)
o根据需要写出尽可能多的函数,以获取包含3名学生信息的类型信息记录列表,计算他们的分数,并将它们转换为结果类型的元组列表。您也可以编写其他支持功能
例如,
- val stuInfo:info list=[{name=”Ali”,ans=”abadccdadb”},
{name=”Ege”,ans=”cbbdacabda”},
{name=”Can”,ans=”adabcbaadb”}];
- val results = calculate(stuInfo);
val results = [("Ali",60),("Ege",20),("Can",100)] : result list
O为需要计算平均分数,并返回谁收到高于平均得分学生写尽可能多的功能。 例如
-val aboveList=aboveAvg(results);
val aboveList = [("Ali",60),("Can",100)] : result list
注: 确保你给你的类型参数和返回值的所有功能。 调整您的表情。 使用爆炸函数将字符串转换为字符数组
- explode "abc";
val it = [#"a",#"b",#"c"] : char list
我为本练习编写的代码如下;但我的代码不起作用:/我的错误在哪里?
val answer_key="ddacbadbca";
type student_information={s_name:string,s_choice:string};
type student_result=string*int;
val student:info list=[{s_name="David",s_choice="adcbbaccad"},{s_name="John",s_choice="ccdabdbbcc"},{s_name="Alice",s_choice="abdaccacdb"}];
val 3studentsResult:student_result=average(student_information);
fun average ((h::t):student_information list):student_result list=student_score(explode"#ans h",explode"key")::average(t);
val sum=0;
fun student_score(((a::b,c::d):'a list):'a list) = (if(a=c) then sum=sum+10 else sum=sum+0)::student_score(b,d);
感谢