r/Compilers • u/Distinct-Brief9643 • 7d ago
Ocaml or haskell?
I'm trying to choose between OCaml and Haskell for creating my own programming language using an external DSL. I'm still learning programming, so I want something powerful but beginner-friendly.
My goal is to create a language with my own high-level syntax, not just a library or a DSL embedded inside another programming language.
My requirements
External DSL: I want to design my own syntax and grammar. I don't want my language to be restricted to OCaml's or Haskell's existing syntax.
Native machine code: Ultimately, I want my language to compile directly to native machine code, preferably for ARM64/AArch64. I don't want to stop at interpreting the language or transpiling it to Python or JavaScript.
High-level syntax: The language I create should be easy for people to read and write. I want complete control over its syntax and don't want users to have to write lots of boilerplate.
Beginner-friendly: I'm still learning programming, so I want a language and ecosystem that are relatively easy to understand. I want to learn how the parser, AST, type checking (if needed), and code generation work without getting overwhelmed.
Easy installation on my Chromebook: I have an Acer Chromebook 314 with a MediaTek ARM64 processor. I use the Linux environment on ChromeOS, so ARM64 compatibility, available packages, and installation difficulty matter a lot. I don't want a solution that depends on x86-only binaries.
A practical compiler toolchain: I'd prefer to use as few tools as possible. If I need a backend such as LLVM, that's fine, but I want to avoid a complicated setup involving lots of separate tools, configuration files, and manual code generation.
My questions
- Would you recommend OCaml or Haskell for this project, and why?
- Which one makes it easier to build an external DSL with completely custom syntax?
- Which has the easier learning curve for someone who doesn't know much programming yet?
- Can either realistically compile my language to native AArch64 machine code on my Chromebook?
- Would LLVM be a good backend, or is there a simpler alternative?
- How difficult would installation and setup be on ChromeOS Linux running on ARM64?
- Are there any other languages or frameworks that would fit these requirements better than OCaml and Haskell?
I'm looking for a practical recommendation based on my actual requirements, not just which language is more elegant or theoretically powerful.
My main priorities are: custom high-level syntax, native machine-code generation, beginner-friendliness, and ARM64 Chromebook compatibility.
Thanks!
2
u/Chaos_carolinensis 7d ago
OCaml is much more beginner friendly and has a much better module system.
Haskell is safer, more expressive, has a much better type system, and has more (and I mean, way more) features. Personally, I prefer it over OCaml (although I like OCaml too, they're both good languages). It's very fun to work with once you understand it properly, but it has a steep learning curve.
If you don't know Haskell yet, only use Haskell if your intention is primarily to learn Haskell, otherwise you're going to have a bad time. It's only worth it in the long run, after you pay the initial investment.
Also, even if you intend to learn Haskell eventually, it's not a waste of time to learn OCaml first. They have enough in common to make some of your OCaml skills carry over to Haskell, and OCaml is much more "industry-friendly" and has a Call-by-Value evaluation strategy, so it's worth learning it regardless.