Skip to content

Conversation

@Janno
Copy link

@Janno Janno commented Nov 4, 2025

Benchmark rocq-prover#21247

There is no real point in exposing this implementation detail, all callers
immediately evaluate the resulting thunk.
We leverage the fact that a ~> unit -> b ≅ a -> b where ~> stands
for a hypothetical pure arrow type. This allows replacing all
instances of the NonLogical.t monad in the logic monad type with
basically nothing, leaving effects implicits in the rightmost
arrow type. Since all clients evaluate the thunk directly, the
new code should be equivalent to the previous one.

Actually, it may even be more correct given that we already
implicitly use the function space in the monadic bind operator
to perform side-effects.
@github-actions

This comment was marked as outdated.

@github-actions

This comment was marked as outdated.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants