Add TypedEncoder for shapeless Record.
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 30/100
Research direction
Start with the RecordEncoder definition shown in the issue and trace its TypedEncoder implementation and implicit parameters. Determine how a two-stage conversion can expose the intermediate HList/Record schema, verify whether i0 and i1 are required, and define completion as a reviewed API and design that supports non-empty records.
Written by the indexing model from the issue text.
Description
Since RecordEncoder is already converting any product type into shapeless Record:
class RecordEncoder[F, G <: HList, H <: HList](
implicit
i0: LabelledGeneric.Aux[F, G],
i1: DropUnitValues.Aux[G, H],
i2: IsHCons[H],
fields: Lazy[RecordEncoderFields[H]],
newInstanceExprs: Lazy[NewInstanceExprs[G]],
classTag: ClassTag[F])
extends TypedEncoder[F] {
...
The only thing required is to break it into 2 stages, such that the intermediate HList/Record representation could serve as a more flexible type-level schema, it could even approximate the capability of the abandoned TypedDataFrame
I also realised that i0~i2 are not used in the function body. i2 is important to not accept HNil, but are i0 & i1 necessary?
- Dominant language
- Scala
- Stars
- 896
- Forks
- 135
- PR merge metrics
- No merged PRs in 30d
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing 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.
More from typelevel/frameless
-
Scala 3 buildsOpenenhancement feature help wanted
Difficulty 4/5 3-5 days Newbie friendliness 35/100
-
Difficulty 4/5 3-5 days Newbie friendliness 35/100
-
Difficulty 3/5 1-2 days Newbie friendliness 35/100
-
enhancement feature
Difficulty 5/5 Over a week Newbie friendliness 25/100
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
All issues in typelevel/frameless
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
Fix Math.ceilDiv wrong result for exact positive divisionsPossibly taken @pamod-madubashana claimed this 1 day ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
scala-native/scala-native#5094 ·
Maintainers usually reply within 1 day
-
dependencies tech-debt
Difficulty 1/5 Under an hour Newbie friendliness 85/100
Maintainers usually reply within 2 days
-
"Show threat" doesn't show the evaluation of the threatPossibly taken @Zinkelburger claimed this 2 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
lichess-org/lila#22008 · 2 comments ·
Maintainers usually reply within 1 day
-
C21 publishes `reactivemongo/core/SSL` as Java 23 bytecode — TLS connections fail on any JDK < 23Open
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
ReactiveMongo/ReactiveMongo#1520 ·
Maintainers usually reply within 1 day