Remove special-casing when singling error
and friends
#597
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Previously,
singExp
had a number of ad hoc special cases for handling functions that look like exceptions (e.g.,sError
andsUndefined
). This was because their return types area
rather than, say,Sing (Undefined @a)
, which impaired GHC's ability to typechecksingletons-th
–generated code. As discussed in #588, however, there doesn't appear to be any good reason for these functions to have return types that are so polymorphic, which called into question why we are maintained these ad hoc special cases in the first place.This patch removes the special casing and gives
sError
,sErrorWithoutStackTrace
, andsUndefined
less polymorphic return types. The upshot is that I was able to delete a fair bit of ugly code fromD.S.TH.Single
, which is a nice payoff.Fixes #588.