我正在嘗試解決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);
感謝