When comparing Idris vs OCaml, the Slant community recommends OCaml for most people. In the question“What are the best (productivity-enhancing, well-designed, and concise, rather than just popular or time-tested) programming languages?” OCaml is ranked 14th while Idris is ranked 29th. The most important reason people chose OCaml is:
Functional programming is based on the lambda calculus. OCaml is in its functional parts almost pure lambda calculus, in a very practical manner: useful for many daily programming tasks. The acitve development makes improvements to the type system like generalized algebraic data types (GADT) or polymorphic variants, so when learning this language you get at once a down to earth usable compiler and advanced abstraction features.
Specs
Ranked in these QuestionsQuestion Ranking
Pros
Pro Full dependent types
Idris not only has support for type classes, but is a fully dependently typed language, giving you the full power to statically verify your code.
Pro Domain driven design and type driven development
Because of full dependent types in Idris, the programmer can focus more on modelling the domain with types and waste less time fixing common bugs that the type checker will catch. Dependent types help apply type driven development and a lot of code auto generation, making the compiler and type checker an ally in developing working software instead of just getting in the way.
Pro Actively-developed functional programming language at the forefront of research
Functional programming is based on the lambda calculus. OCaml is in its functional parts almost pure lambda calculus, in a very practical manner: useful for many daily programming tasks. The acitve development makes improvements to the type system like generalized algebraic data types (GADT) or polymorphic variants, so when learning this language you get at once a down to earth usable compiler and advanced abstraction features.
Pro Encourages functional style
It steers you towards a functional style, but doesn't bother you with purity and "monads everywhere" like other languages, such as Haskell.
Pro No windows!
Strong focus on *nix systems, lacking native support for MS Windows
Lacks native support for Windows systems.
Pro Sophisticated and easy-to-use package manager
OPAM is a package manager for OCaml, which is really easy to use, just like npm. It creates a .opam folder in home directory.
The documentation is great as well, and you can switch between multiple versions of OCaml for each project. You can also package your project and publish it on OPAM repositories, even if the dependencies do not exists on OPAM.
Pro One of the best for writing compilers
OCaml is compiled to native binary, so it's amazingly fast. Being a member of ML-family languages, it has expressive syntax for trees, and has great LLVM support.
Pro Stable syntax
The syntax is consistent, some syntaxic sugar but at a reasonable level, so reading code of others isn't too much confusing.
Pro Strong editor integration
The merlin
editor tool provides all you need to develop OCaml in your favourite editor.
Cons
Con Not widely used
Con Not widely used
Con Weaker type inference
As type inference is undecidable for dependently-typed languages, Idris cannot offer the full type inference that Haskell supports, and so more type annotations will be needed.
Con Different semantics from Haskell
Idris, while similar to Haskell, has strict semantics, which may cause some confusion if your backend is done in Haskell. If using Idris, it would make sense to do the backend in Idris as well, if not for the fact that Idris currently has fewer libraries available for web development than Haskell.
Con Strong focus on *nix systems, lacking native support for MS Windows
Lacks native support for Windows systems.