We don't allow a lambda variable to be polymorphic anymore. Of course this isn't bad, but it makes things too difficult, at least for now. It's also likely that we don't need this specific feature very often I think.
21 lines
546 B
Plaintext
21 lines
546 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: can't unify, invariant illogicality with equality: base kind does not match (Int != Str)
|