You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am also not sure - I didn't write either of those functions, and I don't have a great understanding of solver scopes, so I don't think I'm the best person to address this. Perhaps @cp526 or @yav could weigh in?
For what it's worth, looking at them now, these two functions do seem to me to make different assumptions about how many new solver scopes an erroring action might introduce. pure seems to think that number is always 1, while sandbox seems to think that it could be 1 or more. I don't think both of these assumptions can hold.
I think that makes sense actually - I think a reasonable guess, and it might come down to intent: that pure is only for actions which are expected to succeed (not allowed to run anything afterwards) but sandbox is for actions which may succeed or fail.
In which case, I think it is worth strengthening the definition of pure to still leave the the typing monad/solver usable after a failed action.
cerberus/backend/cn/lib/typing.ml
Lines 73 to 97 in 1425590
I feel like this could be
But I am not sure.
The text was updated successfully, but these errors were encountered: