pub fn greeting() -> Unit {
  println(@lib.hello())
}
pub(all) struct Student {
  id:String
  score:Double
}
pub(all) enum ExamResult{
  Pass
  Fail
}
pub fn is_qualified(student:Student, criteria:Double)->ExamResult{
  if student.score >= criteria{
    Pass
  }else{
    Fail
  }
}
pub fn count_qualified_student(
  students : Array[Student],
  is_qualified : (Student)->ExamResult
)->Int{
  let mut count = 0
  for student in students{
    if is_qualified(student) == Pass {count +=1}
  }
  count
}
impl Eq for ExamResult with op_equal(self,other){
  match (self,other){
    (Pass , Pass) | (Fail , Fail) => true
    _=>false
  }
}