test
elm-format
test | elm-format | |
---|---|---|
3 | 5 | |
233 | 1,306 | |
0.9% | - | |
5.4 | 5.6 | |
2 months ago | about 1 year ago | |
Elm | Haskell | |
BSD 3-clause "New" or "Revised" License | BSD 3-clause "New" or "Revised" License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
test
-
Setting up an Elm project in 2022
The de-facto standard for testing an Elm application is elm-test. However, as noted in the README:
-
Porting Elm to WebAssembly
Once all that handwritten C code was solid, I needed to make sure the C generated from Elm was working properly. I found the source for the core library's unit tests and decided to port them into my project and add some of my own tests. You can run the tests in WebAssembly in your browser too. (Funnily enough, one of the biggest challenges was getting the Elm Test framework itself to run! The framework is more complex than the tests themselves. I still need to come back to the fuzzer tests!)
-
Causing Bedlam in Elm
Lesson Learned: Elm has built in recursion improvements for a variety of positive reasons, and you should think in recursion to solve looping problems. Use property/fuzz tests and bounds checking with early exit to prevent this from locking up your UI (i.e if > 9000, omg abort). If you’re algorithm is reasonable, but the data set is just gigantic, offload to a server instead for more horsepower. Or Workers if you don’t have server chops, can’t upload the large data, or don’t trust your server devs. (“But Doc, I’m the server dev!” Good joke. Ever̸y̴b̸ody laugh. Roll on s̵͓̆nâ̶̱re drum. Curtains.)
elm-format
-
Using the Builder Pattern for Elm Components
Keep in mind for the pipes, many in Elm, whether they’re using elm-format or not, will break the pipes to a different line in case there are many of them. For some, they find this more readable (I’m in that group). Let’s show an example of that using the same pattern to design a Paginator, the row of numbered buttons that allow you to move between pages of data.
-
Elm 2021, a year in review
9ᵗʰ - Aaron VonderHaar releases a new version of elm-format.
-
Setting up an Elm project in 2022
Unlike Javascript, Elm has an official Style Guide for how Elm code should be structured. In addition, some formatting is built into the language itself, such as requiring indents of four spaces. This removes a major point of contention within teams. In addition, the community has put together a wonderful tool called elm-format. Similar to Prettier, this utility can be used to ensure that all Elm code matches the official style guide. Unlike Prettier, there is no custom configuration, meaning once again that your team can focus on writing code instead of what kind of quotes to use.
-
Tips/Resources on starting with ELM
Regarding user experience and tooling, I'd suggest you use an editor that is compatible with the elm language server: https://github.com/elm-tooling/elm-language-server VSCode is a good default choice. You'll also be interested in other toolings. elm-json (https://github.com/zwilias/elm-json) is great to simply install and uninstall dependencies. elm-format (https://github.com/avh4/elm-format) is a must since most active people in the community use it, and simply viewing your code being moved around on save is a good sign that you wrote something with a good syntax.
-
Artyom's Haskell toolbox — a long list of tools/libraries I use
Take for example the debate about 2 vs 4 spaces. People often (but not always) have very strong opinions about this, yet it is clear that this formatting choice will probably not be the dominant factor in the success of a project. A quick google search also reveals no scientific research in this field. Concerning surveys, I found this interesting (from a survey on 2 vs 4 spaces in elm-format) as one datapoint:
What are some alternatives?
Google Test - GoogleTest - Google Testing and Mocking Framework
elm-review - Analyzes Elm projects, to help find mistakes before your users find them.
ut - C++20 μ(micro)/Unit Testing Framework
elm-ui - What if you never had to write CSS again?
CppUTest - CppUTest unit testing and mocking framework for C/C++
hasqlator-mysql - Hasqlator is a haskell sql generator library
Catch - A modern, C++-native, test framework for unit-tests, TDD and BDD - using C++14, C++17 and later (C++11 support is in v2.x branch, and C++03 on the Catch1.x branch)
bytestring - An efficient compact, immutable byte string type (both strict and lazy) suitable for binary or 8-bit character data.
Google Mock
package.elm-lang.org - website for browsing packages and exploring documentation
benchmark - A microbenchmark support library
elm-architecture-tutorial - How to create modular Elm code that scales nicely with your app