mirror of
https://github.com/unisonweb/unison.git
synced 2024-09-17 13:27:30 +03:00
856 B
856 B
Not yet working: properly updating nameless implicit terms.
scratch/main> builtins.merge
inner.ping : 'Nat
inner.ping _ = !pong + 1
pong : 'Nat
pong _ = !inner.ping + 2
scratch/main> add
Here we queue up an update by saving in a namespace where inner.ping
and pong
both have names, but then apply the
update in a namespace where only ping
has a name.
inner.ping : 'Nat
inner.ping _ = !pong + 3
.inner> update.old
scratch/main> view inner.ping
The bug here is that inner.ping
still refers to pong
by name. But if we properly identified the nameless (in the
context that the update was applied) pong
as an implicit term to include in the new ping
's cycle, then ping
would
be left referring to a nameless thing (namely, pong
, but updated to refer to the new ping
).