!import "base.tri" !Local !import "list.tri" List match_ = y (self value patterns : triage t (_ : t) (pattern rest : triage t (_ : t) (test result : if (test value) (result value) (self value rest)) pattern) patterns) match = (value patterns : match_ value (List.map (sublist : pair (List.head sublist) (List.head (List.tail sublist))) patterns)) otherwise = const (t t)