@[expose] instance implementations via `deriving`
Nobody has claimed this yet.
- Dominant language
- Lean
- Stars
- 9.2k
- Forks
- 990
- Avg merge
- 1d 17h
- Merged PRs (30d)
- 175
Description
We sometimes need to add @[expose] to instances created via deriving, because the bodies will be reduced by the kernel in proof terms generated by tactics.
Currently the only mechanism to achieve this is
@[expose] section
deriving instance BEq for Poly
end
which works but is clunky. Ideally the deriving handler here would use @[expose] as much as possible (i.e. when not prevented by private fields).
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Find the deriving handler and inspect how it generates instances such as deriving instance BEq for Poly, then compare that with the existing @[expose] section behavior. Determine when generated implementations can receive @[expose] and when private fields prevent it; done means the handler applies the attribute where permitted without requiring the surrounding section workaround.
Written by the indexing model from the issue text.
Assessment
- Domain
- compilers
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100