Open AnnelineD opened 6 months ago
The issue is that test6
is not typed and thus its arguments are evaluated before function call. Thus test6
is called in the pairs. First item of the pair is an element of the (a b c)
, second item is an element of the (a b d)
. It works according semantics of the non-determinism in MeTTa. One can make work this example by adding type for the test6
:
(: test6 (-> Atom Atom Atom))
(= (test6 $set $subset) (subtraction $subset (intersection $set $subset)))
!(test6 (superpose (a b c)) (superpose (a b d)))
[d]
Describe the bug Non-deterministic functions are not referentially transparent.
To Reproduce
Expected behavior The wrapped function
test6
produces the same result as the top-level test.Actual behavior
test6
gets applied element-wise.Additional context