the next generation of the in-browser educational proof assistant
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

clean ATOM/BASE_ATOM signature #2

open opened by joshcbrown.tngl.sh targeting main from atom-combine-cleanup

Before, we had this ATOM/COERCIBLE_ATOM split to solve circular references, where COERCIBLE_ATOM was a thin wrapper around ATOM to introduce coercions. The idea was that one might want to opt-out entirely from the coercion system and which requires having a complete ATOM definition without any of the extra stuff that coercions introduce. In practice, that idea was already very leaky, with hard-coded requirements that atoms be coercible already in place that would be hard to remove. And besides, one can always opt out of coercions on their own types by declaring coerce = _ => None, and on some predefined type by writing a wrapper with such a definition.

This change flips the previous architecture so that the full ATOM signature includes coercions and a thin BASE_ATOM module which includes a type definition, a tag, and a way to wrap a value into an anyValue (also, I renamed hValue to anyValue for clarity).

This should be the last substantial change to the signature of ATOM.

Labels

None yet.

assignee

None yet.

Participants 1
AT URI
at://did:plc:2b3sedxepcp6u7s2najxr2zm/sh.tangled.repo.pull/3mizysx7fn222
Diff #0

No differences found between the selected revisions.

History

1 round 0 comments
sign up or login to add to the discussion
patch application failed: error: No valid patches in input (allow with "--allow-empty")
expand 0 comments