references deduction in function definitions (reference modifiers can be added to argument names)

This commit is contained in:
ProgramSnail 2023-07-19 10:29:07 +03:00
parent 2e0dfdf3fa
commit 8cc264fa5a
2 changed files with 32 additions and 1 deletions

View file

@ -106,6 +106,7 @@ func_2 = {
print t.0;
}
: operator definition example
( - ) 'a 'b = 'a + neg 'b;
test.something = {
@ -187,7 +188,10 @@ test_ref_access_precendence = {
print_two 'a 'b = print 'a, print 'b;
: example of reference args and comma operator
swap 'a 'b : <> 'A <> 'A = %c := <- 'a, 'a := <- 'b, 'b := <- c; // TODO: use move in some way ??
swap 'a 'b : <> 'A <> 'A = %c := <- 'a, 'a := <- 'b, 'b := <- c;
: previous example with automatic type deduction
swap <> 'a <> 'b = %c := <- 'a, 'a := <- 'b, 'b := <- c;
: several outputs example
scan_three : -> String -> String -> String = scan & scan & scan;
@ -591,6 +595,7 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
(simple_name_identifier)
(number_literal)))))
(function_definition
(definition_info)
(operator)
(argument_name_identifier)
(argument_name_identifier)
@ -950,6 +955,31 @@ arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name
(case
(reference
(simple_name_identifier))))))
(function_definition
(definition_info)
(simple_name_identifier)
(argument_name_identifier)
(argument_name_identifier)
(comma_expression
(comma_expression
(match
(name_definition
(simple_name_identifier))
(case
(reference
(argument_name_identifier))))
(match
(name_expression
(argument_name_identifier))
(case
(reference
(argument_name_identifier)))))
(match
(name_expression
(argument_name_identifier))
(case
(reference
(simple_name_identifier))))))
(function_definition
(definition_info)
(simple_name_identifier)