Jane Street OCaml

ocaml.janestreet.com · Company blog · on HN since 2009

Jane Street's OCaml site hosts material from its engineers, including Yaron Minsky's talks and the Core, Async, and Base libraries.

What HN saysHN commenters cite it as evidence of OCaml's use at Jane Street and praise Minsky's expertise, with Jane Street staff posting hiring notices.
56HN people shared it
34linked it in comments
27stories submitted
404story points
6 years agolast shared
2009people per year2026

Most-shared posts

  1. 1
    Caml trading
    10 people · 36 points · first shared 2009 · 12 comments on HN
  2. 2
  3. 3
    Effective ML - Yaron Minsky
    3 people · 113 points · first shared 2010 · 12 comments on HN
  4. 4
    Announcing Async -- a new monadic concurrency library
    3 people · 31 points · first shared 2011 · 5 comments on HN
  5. 5
    OCaml as a scripting language
    3 people · 26 points · first shared 2010 · 12 comments on HN
  6. 6
    Node/13
    3 people · first shared 2011
  7. 7
    Subtyping, covariance and contravariance in OCaml
    2 people · 10 points · first shared 2011 · discussion on HN
  8. 8
    OCaml, the ultimate refactoring tool
    2 people · 6 points · first shared 2011 · discussion on HN
  9. 9
    The making of Real World OCaml
    2 people · 5 points · first shared 2013 · discussion on HN
  10. 10
    A Working Programmer's Guide to Type-Indexed Values
    2 people · 4 points · first shared 2009 · 1 comments on HN
  11. 11
    Hacker School OCaml tutorial at Jane Street
    2 people · 2 points · first shared 2013 · discussion on HN
  12. 12
    OCamlPro and the future of OCaml
    1 people · 49 points · first shared 2011 · 22 comments on HN
  13. 13
    Announcing OCaml Labs
    1 people · 11 points · first shared 2012 · discussion on HN
  14. 14
  15. 15
    OCaml is smarter than I thought
    1 people · 4 points · first shared 2011 · discussion on HN

What HN people wrote when they linked it

metajack · 2013-01-22
I can't speak for best, but: Ocaml is used and praised by Jane Street [1] Python has a nice suite of financial tools available [2] It may be that the best tool for analysis and for trading are different. For the former you want visualization tools and interactive exploration, but for the latter, you may need raw speed or relative safety of the code. [1] https://ocaml.janestreet.com/?q=node/61 [2] http://wiki.quantsoftware.org/index.php?title=QuantSoftware_ToolKit
samdk · 2012-01-08
While this is mostly true, it's worth noting that this is part of a push to make Core easier to build and use, which we hope will encourage more people to use it. (And enable others to contribute.) There's still a ton of work to be done in that regard, but this release, at least, includes a Linux build script, and the libraries which are necessary for building Core. Also, this release includes Async (our concurrency library), which is a much more recent release (October 2011). If you'd like more information about Async, there's Ron's blog post announcing the release [1], and also a previous comment of mine with some very basic sample Async code [2]. [1] https://ocaml.janestreet.com/?q=node/100 [2] http://news.ycombinator.com/item?id=3278532
groovy2shoes · 2011-10-02
Good read. I rather like Yaron Minsky's videos on the Jane Street site, too: http://ocaml.janestreet.com/
chollida1 · 2011-09-28
Yaron really does know his stuff when it comes to OCaml. http://ocaml.janestreet.com/?q=node/61 people interested in some great OCaml libraries should check out what Jane street has released to the public: http://ocaml.janestreet.com/?q=node/13
tianyicui · 2015-01-02
Jane Street - New York City, London, Hong Kong - Software Developer (Functinoal Programming) INTERN / VISA Jane Street is a technology-focused proprietary trading firm. We are looking to hire great software developers with an interest in functional programming. OCaml, a statically typed functional programming with similarities to Haskell, Erlang, F# and SML, is our language of choice. We’ve got the largest team of OCaml developers in any industrial setting, and probably the world’s largest OCaml codebase. We use OCaml for running our entire business, supporting everything from research to systems administration to trading systems. If you’re interested in seeing how functional programming plays out in the real world, there’s no better place. The atmosphere is informal and intellectual. There is a focus on education, and people learn about software and trading, both through formal classes and on the job. The work is challenging, and you get to see the practical impact of your efforts in quick and dramatic terms. Jane Street is also small enough that people have the freedom to get involved in many different areas of the business. Compensation is highly competitive, and there’s a lot of room for growth. You can learn more about Jane Street and our technology from our main site, janestreet.com. You can also look at a a talk given at CMU about why Jane Street uses functional programming (http://ocaml.janestreet.com/?q=node/61) and our programming blog…
BMarkmann · 2013-08-02
Probably the most known group using it in the US is Jane Street. https://ocaml.janestreet.com/
a-nikolaev · 2013-06-17
Documentation for the Jane Street's Core Library looks incomplete or damaged (E.g. Core.Core_list module https://ocaml.janestreet.com/ocaml-core/latest/doc/core/Core_list.html… I think, this is very unfortunate, because the labrary is probably great. I have not tried it yet (I'm pretty happy using just the standard one most of the time), but I whould like to have Async, Sexplib and other new things from Jane Street. Is there a better documentation for this lib?
bhurt · 2012-08-02
I think this talk is relevant: https://ocaml.janestreet.com/?q=node/61
sandGorgon · 2012-07-13
Can Rust retarget GTK or QT ? Actually, the important question is whether it is meant to. Will it ever be intended to replace application languages like Vala, Mono (used to write Tomboy, Banshee, etc.) or will it be restricted to system level stuff. If yes, will there ever be scripting support (like Ocaml https://ocaml.janestreet.com/?q=node/80) edit: Rust has a nice decentralized package manager as well called Cargo https://github.com/mozilla/rust/wiki/Doc-using-cargo-to-manage-package… ) Pretty nice.
njs12345 · 2012-03-20
OCaml has a powerful module system which can be used in a way quite similar to typeclasses (https://ocaml.janestreet.com/?q=node/37). The main difference is the lack of purity, which means that the side effects of a function aren't part of a function's type. It also doesn't have the wide variety of extensions which you can use to do really crazy stuff (like verifiably correct red-black trees, https://github.com/yairchu/red-black-tree/blob/master/RedBlackTree.hs)…
xadhominemx · 2012-03-14
Not really what you're thinking of but in similar spirit: https://ocaml.janestreet.com/
ths · 2012-02-28
You might find this interesting: https://ocaml.janestreet.com/?q=node/61 TL;DR: Jane Street is a quantitative trading firm whose language of choice is OCaml and has several people programming in it full-time. Besides experiencing the commonly-cited advantages of FP (productivity, expressiveness, local reasoning), they also found it highly performant, useful for rapid prototyping and resilient to changing requirements.
gghh · 2012-02-28
A while ago I truly enjoyed his talk at CMU: https://ocaml.janestreet.com/?q=node/61 both as an introduction to high frequency trading, arbritage and stuff, and to FP in industry too. EDIT: it was already posted below.
pufuwozu · 2011-11-26
Monads suit the problem nicely and it's been done in quite a few languages already: http://lambda-the-ultimate.org/node/4117 http://ocaml.janestreet.com/?q=node/100 http://en.wikibooks.org/wiki/F_Sharp_Programming/Async_Workflows This is something that JavaScript desperately needs. Macros aren't so nice for this stuff in non-homoiconic languages.
vilhelm_s · 2011-10-29
Haskell doesn't have any subtyping, so the problem doesn't come up. For languages that implement generics in a way that takes variance into account, you can look at e.g. Java (ignore the array class, but look at Vector<E>) or Scala. OCaml also has subtyping (for records and variants) and variance-annotated type variables (http://ocaml.janestreet.com/?q=node/99).
babo · 2011-10-29
There is a link at the very first line of they message, while at the bottom there is a link to they complete archive. http://www.janestreet.com/ocaml/async-107.01.tar.gz http://ocaml.janestreet.com/?q=node/13
stonemetal · 2011-05-20
It would appear that they do. http://ocaml.janestreet.com/?q=node/80
raphscallion · 2011-04-07
What about Jane Street's Core (http://ocaml.janestreet.com/?q=node/13), or Batteries Included (http://batteries.forge.ocamlcore.org/) ?
balakk · 2010-12-06
Ocaml prepares you for Fsharp - a first class language of the .NET framework. Full IDE support, cross-platform, very liberal licensing, and more or less on the cutting-edge from a MS languages point of view. Ocaml is also used in the finance domain a bit. http://ocaml.janestreet.com/ Particularly the option types, pipelining, pattern matching, etc look very different to me, coming from mainstream languages.
gaius · 2010-09-29
This video explains a bit more about what they do: http://ocaml.janestreet.com/?q=node/61
mblakele · 2010-08-31
On OCaml, http://ocaml.janestreet.com/ might interest the OP.
kanak · 2010-08-21
Here's a blog post by Yaron describing the talk: http://ocaml.janestreet.com/?q=node/75
SkyMarshal · 2010-06-17
Not quite what you asked for, but check out http://www.collective2.com for this. Also check out Janestreet, algorithmic trading is their business and they open source some stuff. Maybe something useful there: http://ocaml.janestreet.com/
look_lookatme · 2009-08-28
It's very interesting. This Jane St. video had a big influence on my decision to spend some time learning ocaml: http://ocaml.janestreet.com/?q=node/61
chancho · 2009-03-31
They also rewrote the standard library. http://ocaml.janestreet.com/?q=node/27 And did so only recently. Imagine how bad a standard library has to be before a shop takes it upon themselves to rewrite it. I think that might partly explain why many people have dabbled in Ocaml but few have really embraced it.
seliopou · 2015-06-19
Jane Street's Async library is a great example of backpressure (or as they call it, pushback) done right. Specifically, their Pipe module[0] is what implements this concept very nicely. In essence, a Pipe is a stage in a pipeline. You shove values into one end, and it'll pop out the other end. Then, you can build on a pipe by map-ing over it, filter-ing over it, doing whatever you want over it. Each time you add another operations like this, you're extending a pipeline with another stage, all of which can proceed concurrently. A Pipe is an unbounded FIFO. But, you can give it a size budget. What that size budget does is determine when writes to a Pipe will block. So if a Pipe has a size budget of 0, then any write will return a Deferred.t (i.e., a promise) that will become determined only when the value has been sent downstream to the next stage of the pipe. If the size budget is 1 on the other hand, then the Deferred.t of the first write will become determined immediately, allowing computation to proceed. If on the second write the first value hasn't been sent downstream, then it'll block. Once there's only one value waiting in the first stage of the Pipe, the second Deferred will become determined. Another nice module in the library that addresses the connection pooling issue at the end of the blog post (and really that's all it amounts to) is the Throttle module[1]. Here's you can create a Throttle object with however many connections you like, say 5, to however many…
sausagefeet · 2012-03-25
ML's and C# have their strengths and weaknesses, but from a type theory perspective, ML's type system is simply much more powerful when it comes to ensuring correct code than C#'s. Take, for example, your implementation of Head, what if you messed up and wrote: > return (list.Count == 0) ? null : list[0]; Would the C# compiler catch it or would you not find out until runtime? An ML compiler would tell you that function is wrong. What about using Head? If you have a list of integers, will the compiler let you do: > Head(integer_list) + 2 An ML compiler won't, because it's not safe. > This isn't strictly the same as what you described if "None" is different from "null". It is, but the important thing to note is I had to specify that the function, 'hd', can return 'null', by wrapping it in the option type. 'null' is only a valid value for option types. If I write: > val hd : 'a list -> 'a I could not return 'null'/None, it simply isn't valid. And the compiler wouldn't let me. > the 'option' function you have in your example 'option' is a type, not a function (I suppose you can make some high level argument that all types are functions over values or something, but not relevant here). And 'option' itself isn't really even a type, it requires a type variable, so "'a option" is a type where "'a" is replaced by a concrete type at some point. It's not doing the work you described above, it's actually defining a contract between me and users of hd and the…
jlrubin · 2020-10-08
https://ocaml.janestreet.com/ocaml-core/109.55.00/tmp/re2/Regex.html should do the trick! ocaml core is well maintained AFAIK
yminsky · 2018-02-09
We also just released improved docs for Base. Still more to do, but much better than before: https://ocaml.janestreet.com/ocaml-core/latest/doc/base/

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close