| Not really third-party; ocaml-ppx is something similar to `javax` in the Java space? But it is optional and doesn't come bundled with OCaml. Recursive structures are only rare in Rust _because_ they suck to write and have terrible performance characteristics in the language. In languages like Haskell, OCaml and Scala using tagless initial encodings for eDSL's [2] are really, really common. I don't write Rust like I write any semi-functional language with function composition because, well, it's _painful_ and not a good fit for the language. > `T.show foo` or `Foo.to_bar value` is a lot of syntactic overhead The `T.()` opens a scope so OCaml code generally looks like: ```
let foo = T.(if equal zero x then show x else "not here")
``` for, ```
fn foo(t: T) -> String {
if(t == T::ZERO) {
t.show()
} else {
"not here".into()
}
}
``` Even when talking about usage, each language community for better or worse has a predefined workflow in mind. Your questions and workflow are specific to a particular language; you don't, for example, ask about the REPL, the compile times, debugging macros, the cold-start of the compiler, whether hot-reloading is a thing, the debugger, how it interacts with perf, how to instrument an application. Presumably because the language you use or the programs that you make don't have those components as part of their main workflow. [1] https://github.com/ocaml-ppx
[2] https://peddie.github.io/encodings/encodings-text.html |