elm-format
haskell-mode
Our great sponsors
elm-format | haskell-mode | |
---|---|---|
5 | 9 | |
1,306 | 1,305 | |
- | 0.4% | |
5.6 | 7.3 | |
about 1 year ago | about 1 month ago | |
Haskell | Emacs Lisp | |
BSD 3-clause "New" or "Revised" License | GNU General Public License v3.0 only |
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.
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:
haskell-mode
-
There is No “Tooling Issue” in Haskell
You can use GHCI's debugger through Emacs's haskell-debug-mode (part of the haskell-mode package), and probably through other editor/IDEs as well, a programming editor like Emacs or Vim simply needs to be able to run a GHCI session and send commands to it.
-
Kill until next char preceding space | Uppercase | underscore
No, I was only using haskell-mode. So I guess this is LSP's fault, then. Not Emacs's fault and not haskell-mode's fault.
-
What’s so great about functional programming anyway?
If I made it sound like there's something like IntelliSense today, apologies! We've got <https://github.com/haskell/haskell-mode/blob/master/haskell-...>, but it's type-a-command-and-do-a-search: it's not linked in with completion directly in the setups I've seen.
(In practice, I'm usually starting from a slightly different place: I know I want a Frob and I've got a This and a That, so I do :hoogle This -> That -> Frob and get some options. The thought-process is working backwards from the goal more than forwards from one key object in focus. A different way of working, but I'm not convinced it's less effective.)
My point though was that it's an engineering issue, not a fundamental language limitation. ie not a reason all future languages should shun haskell features. The building blocks to do better at completion than haskell curently does are there.
-
Emacs becomes extremely sluggish when I enter a haskell file
check if you have any similar config to what caused this issue: https://github.com/haskell/haskell-mode/issues/1777 for me
-
Requests for packages to add to NonGNU ELPA?
Package-lint has been on my list, but the maintainer, MELPA's Steve Purcell, has been hesitant about NonGNU ELPA in the past (see this discussion), so I have skipped his packages for now, and also because most of the packages he maintains have a "broken" version tag, most of the time -- the reason here is that MELPA adds these manually, and since he understandably is targetting MELPA, there is little interest from his side to fix that.
-
stack compile errors in emacs
You can see the expected output in this PR description.
-
Artyom's Haskell toolbox — a long list of tools/libraries I use
I use haskell-mode. It has a shortcut for loading a module into REPL, and it also runs hasktags for me. That's literally all I use.
-
My setup for messing about with Haskell scripts, 2021 edition
Just as a note from my poking around, this is the "official" way to use a nix-shell with haskell-mode: https://github.com/haskell/haskell-mode/blob/3a019e65b504861d7ea23afbfecd14e5ef63e846/haskell-customize.el#L77
What are some alternatives?
elm-review - Analyzes Elm projects, to help find mistakes before your users find them.
prescient.el - ☄️ Simple but effective sorting and filtering for Emacs.
elm-ui - What if you never had to write CSS again?
Cabal - Official upstream development repository for Cabal and cabal-install
hasqlator-mysql - Hasqlator is a haskell sql generator library
ivy-rich - More friendly interface for ivy.
bytestring - An efficient compact, immutable byte string type (both strict and lazy) suitable for binary or 8-bit character data.
selectrum - 🔔 Better solution for incremental narrowing in Emacs.
package.elm-lang.org - website for browsing packages and exploring documentation
commonmark - Pure Haskell commonmark parsing library, designed to be flexible and extensible
elm-architecture-tutorial - How to create modular Elm code that scales nicely with your app
org-roam - Rudimentary Roam replica with Org-mode