ocamlformat
Auto-formatter for OCaml code (by ocaml-ppx)
merlin
Context sensitive completion for OCaml in Vim and Emacs (by ocaml)
ocamlformat | merlin | |
---|---|---|
2 | 12 | |
600 | 1,543 | |
0.8% | 0.0% | |
8.7 | 8.8 | |
13 days ago | 6 days ago | |
OCaml | OCaml | |
MIT License | MIT License |
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
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.
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.
ocamlformat
Posts with mentions or reviews of ocamlformat.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2023-05-20.
-
Topiary: A code formatting engine leveraging Tree-sitter
It's ironic that just as the excellent https://github.com/ocaml-ppx/ocamlformat is seemingly closing in on 1.0 after ~4 years of development, here comes the implication that it's not good enough.
-
Is there any way to format mll/mly files?
Ocamlformat does not - issue has been open since 2019
merlin
Posts with mentions or reviews of merlin.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2022-05-07.
- Merlin: Context sensitive completion for OCaml in Vim and Emacs
-
Hacker News top posts: May 7, 2022
Merlin: Context sensitive completion for OCaml in Vim and Emacs\ (0 comments)
-
Hoogle for Rust?
Instead of searching functions based on their type structure (like Hoogle), you could search for functions that "consume"/"produce" values of given types (like OCaml's Merlin). I think Rust already computes variance of type constructors, so such a tool just would have to obtain this information.
-
Dot completion
However, after posting this question I stumbled upon this Github issue where they say it isn't supposed to work out of the box and you're supposed to bind a key to it by editing your .emacs file. Turns out the default .emacs file binds auto-complete to "backtab" which means Shift+Tab but that didn't work. I did eventually discover that I can get some kind of completion by binding backtab to completion-at-point like this:
-
Advice/best practice/arhitecture pattern for building language with LSP in mind?
Self-advertising: I partcipated to the writing of Merlin: A Language Server for OCaml (Experience Report), which explains the overall design of Merlin, a language server for OCaml. A key idea of Merlin are that classic lexing-parsing-typing pipelines can easily be adapted to be incremental for a Language Server, especially when they are using immutable data structures.
- merlin: Context sensitive completion for OCaml in Vim and Emacs
What are some alternatives?
When comparing ocamlformat and merlin you can also consider the following projects:
reason - Simple, fast & type safe code that leverages the JavaScript & OCaml ecosystems
hoogle - Haskell API search engine
mirage - MirageOS is a library operating system that constructs unikernels
Mosh - Mobile Shell
google-drive-ocamlfuse - FUSE filesystem over Google Drive
ocaml-lsp - OCaml Language Server Protocol implementation
bap - Binary Analysis Platform
rust-prolog - Rust implementation of prolog based on miniprolog: http://andrej.com/plzoo/html/miniprolog.html
ocaml - The core OCaml system: compilers, runtime system, base libraries
TatSu - 竜 TatSu generates Python parsers from grammars in a variation of EBNF
pyre-check - Performant type-checking for python.
bisect_ppx - Code coverage for OCaml and ReScript