Skip to content

add Derive4J to Alternatives section #15

Open

Description

@jbgi

Not sure if you were aware of Derive4J before developing dataenum?
In any case I'd be curious of hearing your thoughts about it.

Activity

  1. changed the title [-]add Derive4J to Alternative section[/-] [+]add Derive4J to Alternatives section[/+] on Mar 19, 2018
  2. togi commented on Mar 19, 2018

    @togi
    Contributor

    Unfortunately we weren't aware of Derive4J, this is the first time we've heard about it. It definitely looks like a really versatile library that covers a lot of things that we don't, in particular the optics and other more advanced FP concepts look very attractive. I'll definitely add Derive4J to the Alternatives section.

    The reason we wanted something like dataenum was in order to make pure functions used with Mobius less verbose using pattern matching, and it's primarily the exhaustive pattern matching we are interested in. We had partial matching support in dataenum for a while during initial development, but we removed it in favour of simplicity.

    In general, simplicity really was our goal with dataenum, both in terms of API and generated code. Our primary target is Android so there are some considerations like method-count and code size, but it looks like Derive4J is quite configurable in that aspect.

    In our particular context, catering to programmers with a non-FP background is also a concern, so if I was to say anything against Derive4J I suppose it would be that it maybe has too many features. But I don't think that's a very strong argument, and it's quite likely we wouldn't have created dataenum if we had known about Derive4J.

    It'd be really interesting to hearing your thoughts about dataenum, especially since you've been working on the same problem and know the domain!

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions