Files
mgmt/lang/interpret_test/TestAstFunc2/polymorphic-lambda.txtar
James Shubin f2976deb02 pgraph, lang: ast: Fix failing tests due to non-deterministic topo sort
This causes inconsistent type unification when running our tests. It's a
bad user experience too.
2024-07-01 18:34:24 -04:00

21 lines
579 B
Plaintext

-- main.mcl --
import "fmt"
# TODO: should this be allowed? it means the func value has two different types!
# this should be a polymorphic function as a value, iow a lambda
$add = func($x) {
$x + $x
}
$num = 2
$out1 = $add($num) # 4
test [fmt.printf("%d + %d is %d", $num, $num, $out1),] {} # simple math
$val = "hello"
$out2 = $add($val) # hellohello
test [fmt.printf("%s + %s is %s", $val, $val, $out2),] {} # simple concat
-- OUTPUT --
# err: errUnify: unify error with: topLevel(singleton(func(x) { call:_operator(str("+"), var(x), var(x)) })): type error: Int != Str