8 ms·
OCaml is a beautiful language but I haven't seen any big non language projects written in OCaml. Does any one know why? OR do such projects exist and it is only
by abhinai 8y ago
OCaml is a beautiful language but I haven't seen any big non language projects written in OCaml. Does any one know why? OR do such projects exist and it is only that I am not aware of them?
- z3phyr 8y agohttps://mirage.io/ https://mirage.io/
- isaachier 8y agoWhen you say non-language, do you mean unrelated to OCaml specifically or any language? Facebook implemented its infer linter for C, C++, Java, and Objective-C in OCaml: https://github.com/facebook/infer https://github.com/facebook/infer. When I worked at Bloomberg, they released BuckleScript for JS development. Not sure if that caught on though.
- richeyryan 8y agoBucklescript has caught on to some extent. Its sister syntax ReasonML is getting a little traction which means that Bucklescript is getting a little traction as they share the same build chain. Facebook Messenger is built using Reason. A few other smaller companies are using it too: https://reasonml.github.io/en/users-of-reason https://reasonml.github.io/en/users-of-reason Wow Air were using it though one probably can't blame that for their collapse. I guess that list doesn't include straight Bucklescript users either. There are definitely companies out there who use it outside of Reason so the OCaml, in general, is getting some use in industry which is nice.
- microcolonel 8y agohttps://www.janestreet.com/technology/ https://www.janestreet.com/technology/
- sanxiyn 8y agoUnison File Synchronizer is written in OCaml.
- wtetzner 8y agoThere's Zero Install: http://roscidus.com/blog/blog/2014/06/06/python-to-ocaml-retrospective/ http://roscidus.com/blog/blog/2014/06/06/python-to-ocaml-ret...
- monocasa 8y agoA lot of thereom proving is done in Isabelle/HOL, a DSL in OCaml.
- fspeech 8y agoHol is in sml. HolLight is OCaml.
- swingthesickle 8y agoThere's a (unofficial) FUSE file system for Google Drive written in OCaml: https://github.com/astrada/google-drive-ocamlfuse https://github.com/astrada/google-drive-ocamlfuse
- thinkpad20 8y agoReasonReact is a fantastic project that is written in OCaml (with Reason syntax). In addition to being a wonderful frontend framework, it's also a great introduction to the language.
- oneplane 8y agoA lot of Xen is built in OCaml
- zukzuk 8y agoThe Tezos blockchain / dapp platform is based on OCaml. This to me makes it really appealing, if I were to find some actual use case for a blockchain application :)
- msvan 8y agoThis is OCaml's problem: it's a great language with no users. ReasonML is trying to solve this by making it more approachable, and they're making steady progress.
- bryanphe 8y agoThere are some really cool projects popping up with ReasonML - here are a few: - A package manager like NPM, but for native code: https://github.com/esy/esy https://github.com/esy/esy - A fast Node version manager: https://github.com/Schniz/fnm https://github.com/Schniz/fnm - A fast replacement for dotenv-cli: https://github.com/ulrikstrid/reenv https://github.com/ulrikstrid/reenv - A fast JS bundler: https://github.com/fastpack/fastpack https://github.com/fastpack/fastpack - A native language server: https://github.com/jaredly/reason-language-server https://github.com/jaredly/reason-language-server The OCaml language and toolchain is very powerful... and I do believe ReasonML makes it more approachable, at least for a wider audience of developers comfortable with JavaScript-style syntax.
- ihnorton 8y agoI think you forgot one ;) - A native GUI: https://github.com/revery-ui/revery https://github.com/revery-ui/revery
- progman 8y ago> This is OCaml's problem: it's a great language with no users. My other post in this thread proves the opposite.
- rixed 8y agoOCaml is very good at symbolic computations, and not so good at floating point computations. Therefore it's a very good language for writing compilers etc. Further than that, there are no more programs written in it for the same reason than there are no more programs written in any interesting languages, I guess; ie largely accidental.
- oconnor0 8y ago> and not so good at floating point computations What does this mean? I was under the impression the OCaml compiler did a decent number of floating point specific optimizations, like unboxed arrays and what not.
- noir_lord 8y agoSurprised me as well janestreet are a well known user of ocaml and I can't imagine they don't use a lot of floats.
- pjmlp 8y agoI guess it is the typical complain about using separate operators for ints and floats. It never bothered me in Caml Light, let alone when Objective Caml was introduced.
- oconnor0 8y agoAh, maybe, perhaps I am in the minority that liked the different operators for ints and floats. :D
- andrepd 8y agoYou can write floating point operators in several different ways. You can write with the normal floating point operators x *. y +. z or, since `Float.(+) = (+.)`, `Float.() = (.)`, etc, let open Float in x * y + z or simply Float.(x * y + z)
- xyproto 8y ago
- floatboth 8y agoFrama-C and Why3. Okay, maybe they're somewhat "language" projects since one is parsing C and another has its own language :)
- cosmic_quanta 8y agoThe Fastest Fourier Transform in the West (FFTW) library is an example of a ubiquitous software product using OCaml. The FFTW library is a C library, but it is in large parts generated by an OCaml program, genfft (from the FAQ http://www.fftw.org/faq/section2.html#languages http://www.fftw.org/faq/section2.html#languages)
- progman 8y agoCompanies using OCaml: https://ocaml.org/learn/companies.html https://ocaml.org/learn/companies.html What is OCaml used for? https://www.quora.com/What-is-OCaml-used-for?share=1 https://www.quora.com/What-is-OCaml-used-for?share=1 Further infos: awesome-ocaml - A curated collection of awesome OCaml tools, frameworks, libraries and articles: https://github.com/ocaml-community/awesome-ocaml https://github.com/ocaml-community/awesome-ocaml OCamlPro Research and Development: https://www.ocamlpro.com/research-and-development/ https://www.ocamlpro.com/research-and-development/ OCaml Weekly News (RSS): http://alan.petitepomme.net/cwn/cwn.rss http://alan.petitepomme.net/cwn/cwn.rss
- lelf 8y ago> any big non language projects written in OCaml Coq proof assistant (https://coq.inria.fr https://coq.inria.fr). Well, you can say it is language-related, but it’s a lot more than that.
- amelius 8y agoI'd love to use it, but there seems to be no multicore support.
- nickpeterson 8y agoI obviously don't t know your use case, but the more I look into multi-core code, the less impressed with it I am. I think you're almost always better with a tight loop and a good persistence strategy. If the thing you're doing really benefits trivially from easy paralellism, I'd lean on gpus anyways...
- amelius 8y agoWell one usecase I have in mind is a fast distributed datastore that integrates well with the rest of the language. This means I need threads, to do transaction processing. And I also need shared memory at the language's object level, allowing structural sharing for efficiency.
- BubRoss 8y agoIt could be worth taking a look at this, it sounds like an example of what you want (C++11) https://github.com/LiveAsynchronousVisualizedArchitecture/simdb https://github.com/LiveAsynchronousVisualizedArchitecture/si...
- nikofeyn 8y agobasically every program i have written has been concurrent and benefited from multi core support. a language that doesn’t have it just isn’t an option.
- pjmlp 8y agoSecurity exploits and plugin crashes on the other hand prove there is a benefit in using multiple processes instead.
- 8y ago
- thosakwe 8y agoI’m a huge OCaml fan, but really it lacks a lot of things that you get out of the box with the runtimes of other languages. Multi core support is the most obvious one. It’s definitely great for things like compilers, though. But I wouldn’t necessarily use it for a Web server.
- cedricbonhomme 8y agoIt's even great to draw nice fractals: https://github.com/cedricbonhomme/iterated-function-systems https://github.com/cedricbonhomme/iterated-function-systems ;-)
- yawaramin 8y agoMulticore support is imho nowhere near OCaml's top problem :-) that would probably be a toolchain that lends itself to easy reproducible package management. But we're getting there.
- kcsrk 8y agoWe're working on it. You can install and play around with Multicore compiler today though the wider library ecosystem is yet to catch up. https://github.com/ocamllabs/ocaml-multicore https://github.com/ocamllabs/ocaml-multicore
- pjmlp 8y agoNot everything needs to be usable for a Web server. I also wouldn't use C or C++ for anything directly plugged into the network. Morris worm proved what happens 30 years ago. Besides, there are also multiple processes as possible solution.
- cedricbonhomme 8y agoThere is: https://bitbucket.org/skskeyserver/sks-keyserver/ https://bitbucket.org/skskeyserver/sks-keyserver/
- baby 8y agoAs someone who tried to get into it : - the syntax is not great. I've heard it's one of the reasons why F# was born - not many people use Ocaml, which makes it hard to find help - not many good resources. The official documentation is really hard to parse and there isn't much besides it and the reference book (which reads more like a book than a reference). - no good ways to debug, print objects, test, etc. - no one seems to agree on what is the standard library or the correct packages to import (for example there are several Option package)
- snaky 8y ago> MetaOCaml has been successfully used for the most optimal stream fusion, specializing numeric and dynamic programming algorithms, building FFT kernels, compilers for an image processing and database query DSLs, OCaml server pages, generating families of specialized basic linear algebra and Gaussian Elimination routines, and high-performance stencil computations. http://okmij.org/ftp/ML/MetaOCaml.html http://okmij.org/ftp/ML/MetaOCaml.html
- parley 8y agoI’ll add to all the examples in this thread that the Rust (also partly of ML descent) compiler was written in OCaml until it became self hosting. I’ll also +1 the comments about ReasonML which is very promising. Though I suppose these are both ”language” related — just not strictly the OCaml language.
- the_why_of_y 8y agoThe tooling around libguestfs, a library for manipulating disk images that is typically used with KVM/Qemu based virtualization, is implemented in OCaml; the library itself is implemented in C. https://rwmj.wordpress.com/2017/06/04/new-in-libguestfs-rewriting-bits-of-the-daemon-in-ocaml/ https://rwmj.wordpress.com/2017/06/04/new-in-libguestfs-rewr... http://libguestfs.org/ http://libguestfs.org/