================================================================================ Match ================================================================================ def fruit_cost : fruit = { return (match fruit with | $Banana -> 11 | $Apple | $Orange -> 7) } def amount_to_string : x is_zero_separated = { const ans = match x with | 0 ? is_zero_separated () -> "Zero" | 0 | 1 | 2 | 3 | 4 -> "Few" | x ? (5..9).contains x -> "Several" | x ? (10..19).contains x -> "Pack" | _ -> "Lots" return ans } -------------------------------------------------------------------------------- (source_file (source_statement (function_definition_statement (function_definition (extended_name (name_identifier)) (extended_name (name_identifier))) (superexpression (expression (prefixed_expression (block (block_statement (prefixed_expression (return_expression (expression (subexpression (subexpression_token (scoped_statement (superexpression (flow_control (match (expression (subexpression (subexpression_token (name_expression (extended_name (name_identifier)))))) (match_case (pattern (type_constructor_pattern (type_expression (type_subexpression (type_identifier))))) (expression (subexpression (subexpression_token (literal (number_literal)))))) (match_case (pattern (type_constructor_pattern (type_expression (type_subexpression (type_identifier)))))) (match_case (pattern (type_constructor_pattern (type_expression (type_subexpression (type_identifier))))) (expression (subexpression (subexpression_token (literal (number_literal)))))))))))))))))))))) (source_statement (function_definition_statement (function_definition (extended_name (name_identifier)) (extended_name (name_identifier)) (extended_name (name_identifier))) (superexpression (expression (prefixed_expression (block (block_statement (variable_definition_statement (any_name (annotated_name (extended_name (name_identifier)))) (superexpression (flow_control (match (expression (subexpression (subexpression_token (name_expression (extended_name (name_identifier)))))) (match_case (pattern (pattern_token (literal (number_literal)))) (expression (subexpression (function_call_expression (extended_name (name_identifier)) (function_argument (subexpression_token (literal (unit_literal))))))) (expression (subexpression (subexpression_token (literal (string_literal)))))) (match_case (pattern (pattern_token (literal (number_literal))))) (match_case (pattern (pattern_token (literal (number_literal))))) (match_case (pattern (pattern_token (literal (number_literal))))) (match_case (pattern (pattern_token (literal (number_literal))))) (match_case (pattern (pattern_token (literal (number_literal)))) (expression (subexpression (subexpression_token (literal (string_literal)))))) (match_case (pattern (pattern_token (extended_name (name_identifier)))) (expression (subexpression (function_call_expression (subexpression_token (scoped_statement (superexpression (expression (subexpression (binary_operator_expression (subexpression (subexpression_token (literal (number_literal)))) (operator) (subexpression (subexpression_token (literal (number_literal)))))))))) (extended_name (name_identifier)) (function_argument (subexpression_token (name_expression (extended_name (name_identifier)))))))) (expression (subexpression (subexpression_token (literal (string_literal)))))) (match_case (pattern (pattern_token (extended_name (name_identifier)))) (expression (subexpression (function_call_expression (subexpression_token (scoped_statement (superexpression (expression (subexpression (binary_operator_expression (subexpression (subexpression_token (literal (number_literal)))) (operator) (subexpression (subexpression_token (literal (number_literal)))))))))) (extended_name (name_identifier)) (function_argument (subexpression_token (name_expression (extended_name (name_identifier)))))))) (expression (subexpression (subexpression_token (literal (string_literal)))))) (match_case (pattern (pattern_token (extended_name (name_identifier)))) (expression (subexpression (subexpression_token (literal (string_literal))))))))))) (block_statement (prefixed_expression (return_expression (expression (subexpression (subexpression_token (name_expression (extended_name (name_identifier))))))))))))))))