one*_*ser 0 haskell types tuples list
我必须有一个数据 Student 和一个类型类:
data Student = Student {nome :: String
, stdNumber :: Int
, approvedClass :: Int
, failedClass :: Int
}
type Class = [Student]
Run Code Online (Sandbox Code Playgroud)
我正在尝试添加到批准的班级编号中,但学生失败了,但我不知道该怎么做。我已经有了这个:
addClasses :: Student-> Int -> Int -> Student
addClasses student aC fC = (student _ _ (approvedClass+aC) (faileClass+fC))
Run Code Online (Sandbox Code Playgroud)
但它不起作用,我不明白为什么?或者如何使它工作?
_仅在模式匹配中有效,并不会自动表示“保持此字段相同”。相反,使用记录更新语法:
addClasses :: Student-> Int -> Int -> Student
addClasses student aC fC =
student { approvedClass = approvedClass student + aC
, failedClass = failedClass student + fC
}
Run Code Online (Sandbox Code Playgroud)
作为记录语法的替代方案,您需要显式匹配每个字段以在构造新Student值时重用。
addClasses :: Student -> Int -> Int -> Student
addClasses (Student w x y z) aC fC = Student w x (y + aC) (z + fC)
Run Code Online (Sandbox Code Playgroud)