Feedback is appreciated as well as instructions on how to get it into Hackage, given that I have never done this before.
Great work. I love seeing uses of RequiredTypeArguments. It’s just the right sort of modern Haskell I want to read & write more of.
Regarding Hackage-- you need an account, and I believe must be added to the uploaders group. See: Register a new account | Hackage . I can endorse you (send me a message as you please). You will want to clean up some package metadata before uploading, like package version. You may also want to reconsider the package name, as dimensions already exists.
I see the library involves some non-trivial Symbol parsing. You may be interested in a Symbol parser combinator library I’m developing, Symparsec. It provides enough primitive combinators that you can write parsers almost like in megaparsec. Pretty parse errors, too. Let me know if I could help you in using it. (Also, if it’s OK, I might adapt your parser for an example parser, as I’ve done for typelits-printf’s format string parser at Symparsec.Example.Printf.)
The symbol parsing is actually pretty simple, so I’m satisfied with it now, but you can adapt it for your example. I actually asked on reddit about Symbol Parsing and saw your reply. Reddit - The heart of the internet was me.
I can change the package name. Is there too much confusion with the dimensions package? Can you give me an new name?
Oh! Your post was the thing that finally pushed me to reconsider my Symbol parser library. Thank you for the indirect inspiration! ![]()
I don’t believe Hackage requires “clearly distinct” package names. But from a library consumer perspective, having two libraries providing a different API only a letter apart feels surprising. (I’m reminded of symbol and symbols, which actually do completely different things.) It’s purely a suggestion from that view.
Based on the Symbol manipulation that your library does (that I don’t believe other unit of measurement libraries do), you could consider dimension-symbols or dimension-strings.
Makes sense. The only thing is that you aren’t isn’t constrained to symbols, by defining the proper ToDimension instance and also defining FromDimension for printing along with Compare, you can use whatever kind you want. (I’ll add that to the ReadMe, thanks for the reminder) Also, how should I contact you for the endorsement?
I think you can send direct messages on Discourse, if you click my user name.