Allow binary operators to be used as lambdas (#385)

* Add operator lambdas

* Do not register anonymous functions as called functions

* Add tests

* Update CHANGELOG

* Update the docs

* Do not allow (..) to be used as a lambda

* Rename the function sum to any
This commit is contained in:
Gaith Hallak
2022-06-03 13:12:23 +04:00
committed by GitHub
parent b0e6418161
commit b3767071a8
6 changed files with 46 additions and 2 deletions
+8
View File
@@ -795,6 +795,14 @@ failing_contracts() ->
[<<?Pos(2,5)
"Empty record definitions are not allowed. Cannot define the record `r`">>
])
, ?TYPE_ERROR(operator_lambdas,
[<<?Pos(9,32)
"Cannot unify `(int, int) => int` and `(int) => 'a`\n"
"when checking the application of\n"
" `(l : _, r : _) => l + r : (int, int) => int`\n"
"to arguments\n"
" `1 : int`">>
])
, ?TYPE_ERROR(warnings,
[<<?Pos(0, 0)
"The file `Triple.aes` is included but not used.">>,
+14
View File
@@ -0,0 +1,14 @@
include "List.aes"
contract C =
type state = int
function any(l : list(bool)) : bool = List.foldl((||), false, l)
entrypoint init() =
let bad_application = (+)(1)
let good_application = (-)(3, 4)
let op_var = (+)
let op_var_application = op_var(3, 4)
good_application + op_var_application