16 ms·
Introduction to Functional Programming in OCaml
- k__ 8y agoCan anyone explain why OCaml seems easier for people from non-FP backgrounds than Haskell? I tried Haskell and PureScript and didn't understand a thing. I tried OCaml and Reason and it felt rather easy to learn.
- lmm 8y agoHaskell forces you to manage effects explicitly, even for e.g. input/output. In a production system this is probably a good idea (most of your functions shouldn't be doing I/O and you probably do want to flag up a function that is), but when you're just trying to get started with "hello world" it's a confusing extra complication. If that was your problem, it might be easiest to start by doing things in the REPL (GHCi) where you don't need to be doing I/O, and only start writing standalone Haskell programs once you're a bit more comfortable with the language. But I'm just guessing - maybe you found some other aspect to be a barrier?
- k__ 8y agoI had the feeling Haskell would use much more FP jargon than OCaml, I think. People where talking about profunctor optics, monads and lenses, stuff I never heard of.
- lmm 8y agoThose are useful general-purpose libraries. Treat them like any other library with its own specialized terminology - and, like any other library, don't use them until you need them.
- k__ 8y agoSounds reasonable. The way people talk about them often feels to me like they are language constructs.
- lmm 8y agoThey're not, but they're general-purpose enough that you end up using them in a similar way. When you have higher-kinded types it becomes possible to write very general libraries that are applicable to a lot of different problems. This is great because it means you can reuse the same libraries you're used to in a very different domain, but it can make it harder to learn them because they're not about anything specific.
- sanderjd 8y agoI think a big problem is that it's hard to slowly develop "taste" in Haskell. That is, it's hard to navigate the path from not knowing what you do and don't need to use to accomplish your task, to being able to tastefully choose the right tools. Like you say, things like lenses are just useful libraries that you may or may not need, but how do you know? People on message boards and blogs may suggest that they are the right way to solve your problem, and you have to grok a bunch of stuff to determine whether or not you agree. I find this harder in Haskell than other languages, because I find it harder to progress slowly. In most languages, step one for a beginner is to just hack something together, maybe even using direct for or while loops, switch statements, and the like. Then you can go back and figure out what the language gives you to express what you've done in a better way. Then you can iterate on that basic process, moving up the levels of abstraction, often finding at various points that you didn't need to write any of the code you wrote because a library exists that does the same thing if you call it in the right way. By the time you're reading about the library, you understand the contours of the problem it solves, because you've already done a worse job of solving those problems yourself. I've always had trouble injecting myself into the right point of this step-wise procedure in Haskell, and instead feeling like I need to do a bunch of research on the right ways to do things in order to make any forward progress.
- lmm 8y agoI think the issue is that the frameworks in Haskell expose the generic abstractions they're built on, whereas in another language a similar framework would just offer opaque magic. E.g. when writing a web endpoint you can see that you're returning something that uses a monad transformer and you can easily dive into the details of what that means and what the framework functions that manipulate that are actually doing: in the long run you will eventually want to do that, but in the short run "the framework will call your function with these parameters, by magic, and customizing that behaviour requires you to change things in the framework's internals" can actually be easier to get started with, since it tells you clearly which parts you should be messing with and which you shouldn't. I don't have a good answer, because I wouldn't want to stop building Haskell frameworks that way. But I do agree it's a problem.
- e12e 8y agoI think there's definitely a haskel trend to prefer "accurate" nomenclature vs merely "serviceable correct". That is to prefer "joint rod and spherical cap digging implement" vs "shovel".
- agentultra 8y agoDid you try OCaml and Reason after your attempts to learn Haskell? That might have something to do with it. Sometimes we don't get the idea the first time we are exposed to it and we need time to let it sink in. It's when we are exposed to the same ideas a few times in different formats that it starts to trigger our tendency to notice patterns. I have observed a similar effect that it seems like plenty of people come from an imperative language to OCaml and stay in OCaml longer than say, Haskell. Although I'm not sure why that is but maybe they are much like you and tried Haskell first?
- k__ 8y agoYes, I did try it after Haskell. I had the impression the FP hype started with Haskell and so I tried it, alter people started talking about OCaml, so I gave FP another try and liked it.
- agentultra 8y agoI did as well. I tried Haskell on my own in the aughts before giving up. I had some fond exposure to OCaml and SML but never got into it until I heard the Jane Street talks, heard about MirageOS, and decided to take the OCaml course in 2016. I've since gone back to Haskell and am finally enjoying it... but I credit OCaml with getting me to a place where I could enjoy Haskell the second time around.
- andrepd 8y agoThere are two major differences between OCaml and Haskell. First: Haskell is a pure functional language, meaning that side effects, IO, keeping state, all that must be dealt with inside the type system, which while undoubtly clean and powerful, it makes it often cumbersome to do things that should be quick and simple. OCaml, on the other hand, is pragmatic. It promotes and facilitates functional programming but it also let's you easily "drop down" (so to speak) to an imperative way to write code. You have mutable variables, imperative loops, you can perform side effects anywhere, etc. As a rule of thumb, you can write fully functional code, yet sometimes when the best way to write a certain thing is imperatively, you can do so with no hassle. Second: Haskell is lazy, and OCaml is strict. This makes it much easier to reason about performance and makes for much more predictable code. At the same time, it has first-class support for laziness when you do need it, but you have to explicitly "opt in", so to speak. Haskell also lets you force strict evaluation, but you will find it's much easier to build laziness in a strict language than the other way around. There are also other important differences (like typeclasses vs functors) but I feel these two are the biggest ones.
- k__ 8y agoYes, I think the lazy evaluation was big pain point.
- TuringTest 8y agoIn Haskell, you have to opt-in to side-effects (monadic do-blocks). In OCaml, you have to opt-in to lazy evaluation.
- cannabis_sam 8y agoIn (GHC) haskell you also have opt-in strictness (per module or per variable)
- the_duke 8y agoDo blocks don't allow side effects, they are just syntactic sugar that makes composing monadic operations easier. Haskell does have escape hatches with unsafePerformIO and IORef/STRef
- opnitro 8y agoSeconding this. I got discouraged trying Haskell. Came back and tried it with Racket and things made more sense. I certainly wouldn't give Haskell as someone's first functional language.
- cmrdporcupine 8y agoI personally found the syntax in the ML series languages to be clearer when learning. I found Standard ML/NJ to be even easier (and potentially nicer) than OCaml for what it's worth. I think it comes down to visual cues. Haskell eschews syntactic sugar and I personally find it hard to read the structure of expression. I found ML to be more explicit. That and the community around Haskell really loves... clever... constructions. And its type system is more expressive but also complex from a mental model POV.
- akavel 8y agoFor me personally, the proliferation of custom operators/syntax is a serious obstacle. When reading, I seem to need to "hear/speak" what I'm reading in my mind, and seeing a line of operators that I have no idea how to read/spell "aloud" (and thus remember, even if I manage to find their definition, which is non-trivial too), cripples my mind and renders me unable to comprehend what's going on in the code.
- k__ 8y agoYes, this was a huge problem for me too when I tried to learn Scala.
- hellofunk 8y agoThis was my #1 turnoff for Haskell as well. All these operators and functions, each with possibly varying precedence as well as different fixities. I was constantly having to lookup how the function was actually being called -- which of its surrounding entities were a part of the function call, and in which order did the calls take place? In addition to this complexity, the functions are often cryptic little characters (operators) that just make the readability worse. Programming languages should make our lives as developers easier, right?
- shados 8y agoDing ding, we have a winner. A lot of languages support custom operators, but some really abuse the hell out of them. Googling for <%-/\-%> is very difficult.
- tylerhou 8y agoBut you can always Hoogle for them: https://www.haskell.org/hoogle/?hoogle=%3C%24%3E https://www.haskell.org/hoogle/?hoogle=%3C%24%3E
- akavel 8y agoOh! So, first of all, I didn't know about this site, and actually it could have helped. I wish it was mentioned early enough (e.g. when first operators are introduced?) in the tutorial I was reading (Learn You Some H.? Not sure, don't remember now.) Secondly however, I see it still doesn't mention how to spell the operator. Though I suppose in this particular case "fmap operator" could be acceptable?... edit: Eh: see for example '>>=' and '>>'. Based on the docs, I could only try to call them both "compose", but they need some differentiation in my mind...
- risto1 8y agoHaskell is a much more complicated language than Ocaml: - Laziness can be hard to reason about for newcomers who have really only had experience with strictness - You have to learn a lot of concepts from category theory right off the bat, because it uses IO and monads. You need to know what a monad is, and almost all monad tutorials are notoriously bad at explaining what a monad is. You also don't know when to stop, when you've learned 'enough' category theory - The community is full of clever tricks and idioms that aren't really necessary to write haskell code, but a beginner might think they need to know it. Examples: monad transformers, free monads, comonads, lenses, coroutines - The type system is substantially more complex. Haskell has higher kinded polymorphism, rank-n-types, and a neverending set of extensions that a lot of haskellers use that'll keep you busy learning the rest of your life. Haskell code can also be very polymoprhic, and the type errors can be really confusing sometimes. Ocaml doesn't have these, but you can simulate the most important features: higher kinded polymorphism with functors, and rank-n-types with records That's why Ocaml is easier to learn and use
- pyrale 8y ago> - Laziness can be hard to reason about for newcomers Yes > - You have to learn a lot of concepts from category theory right off the bat, because it uses IO and monads. No - in particular, you don't have to understand monads to use the IO monad. You just have to understand the IO monad API. That's pretty similar to not having to understand how motors work in order to drive a car. > - The community is full of clever tricks and idioms that aren't really necessary to write haskell code, but a beginner might think they need to know it. Yes, and that's the major mistake people may do when starting Haskell. You don't need (and you probably can't) know everything you read about in order to be efficient in Haskell. Just use the simple stuff and live the happy life. > - The type system is substantially more complex. Yes, but it shouldn't be a problem. See point above, learn only what you want/need and live the happy life. (also, Ocaml is an amazing language. It's fine if you enjoy it and don't enjoy Haskell)
- risto1 8y agoIf you're writing Haskell code you need to be able to understand Haskell libraries and other people's code. You definitely need to understand the type system and what monads are, unless you're main objective is to just write a toy program The evidence is overwhelming, considering how many people want to learn and write Haskell and how many people struggle with it. If people could ignore all of this stuff they would've figured that out by now, but they can't ignore it to really be productive. I like Haskell a lot btw, just don't think it's very practical, and it's most important contributions to FP are already being adopted in other languages without the additional complexity
- laurentl 8y agoI have fond recollections of learning to program in Caml (this was in 1997). Without ever being “indoctrinated” to FP (I only recently made the connection to FP), we learned recursion, list manipulation, pattern-matching and currying before loops. Tail-recursion was the standard way to write a function. I don’t think teaching the same concept to first year students would be as easy in Haskell (although I only know the language from LYAH)
- e12e 8y ago[ed: where I say ml, read sml - standard meta language] One of the reasons I'm interested in fb's reasonml dialect of ocaml is that I stumbled a bit going from plan ml (meta-language) to ocaml. That said, I think ocaml too is less complex than haskell. But more so ml.
- ww520 8y agoOne word, laziness.
- agentultra 8y agoThis is a fun course. I completed it the last time it was ran and had a blast. I was proficient enough by the end to start writing small to medium programs and libraries in OCaml.
- Xophmeister 8y agoWhile this may no longer apply, could you give an idea of the strictness of the schedule? I am very interested in this, but I'm going to miss the first two weeks, as I'll be on leave. If it's simply a case of playing catch up, then that's fine, but if assessments, etc. are rigidly set on dates, then that would be a deal breaker for me.
- agentultra 8y agoAs I recall you can complete the course at your own pace. They have an online checker you submit your exercises to.
- emmelaich 8y agoFWIW the archives of the previous course are available.
- thangngoc89 8y agoOCaml is a very powerful language. I'm still discovering new features/patterns everyday. But coming from a background with C/Javascript, the syntax is definitely hard to understand. For this particular problem, I think ReasonML has done a very good job of introducing OCaml platform to a wider audience. Shamelessly plug: I'm working sketch.sh [1] as a learning project for ReasonML. It's a interactive playground (like IPython/Jupyter) for OCaml and ReasonML. It's provide inline types and evaluated values. Give it a try if you're learning OCaml/ReasonML. [1]: https://sketch.sh https://sketch.sh
- DonaldPShimoda 8y ago> But coming from a background with C/Javascript, the syntax is definitely hard to understand. I work with Haskell fairly regularly, and have experience with a few other languages (Python, Racket, C/C++, Java, etc.), but I definitely agree with this sentiment. I am not a fan of OCaml's syntax at all. I haven't had a chance to check out Reason yet though, so maybe I'll spend some time playing with that soon!
- fhood 8y agoI don't think its syntax is that bad. A bit daunting at first, but it isn't like you need to learn a ton to understand it, so once you have the basics it is pretty readable.
- erokar 8y agoI don't get it. I work day to day with Algol-syntax languages like JavaScript and Java, but have dabbled in ML languages like Elm and Haskell. One of the things I really like about those languages is the syntax -- succinct and clear. What takes time and is hard for me is grasping the semantics and patterns.
- acjohnson55 8y agoI find it pretty clear in simple cases but ambiguities and associativity rules can make interpreting some code a real pain.
- stochastic_monk 8y agoAs an aside, as someone who primarily uses imperative languages, I’ve found the proliferation of support for functional paradigms in Python and C++ (Fold expressions, reduce, transform, map, etc) has changed how I write code immensely. I’m likely to try this out.
- agumonkey 8y agoyour opinion is super valuable, do you think they make your code shorter, cleaner, more modular, safer ? what do you miss from imperative programming ? or do you consider you would have changed the way you code if you knew about fp idioms long before ?
- stochastic_monk 8y ago1: Cleaner and more concise. Perhaps safer, as the less code there is going to performing a task, the fewer places I can make a mistake. More importantly, it directs me to think about my problem from a higher level of abstraction. 2: I do mix both paradigms, so I’m not stuck without imperative features. That being said, there are times where I feel like my attempts to move a concept into FP forces me to make some less than ideal choices to fit it into the paradigm. If those are in inner loops, I forgo functional programming to do precisely what I need. (For example, managing exceptional cases or heterogeneous actions can be awkward.) 3: I would have used them more. I’ve always been a fan of comprehensions and map c/o Python, but my code would have been more efficient and concise had I started earlier. The additions of cppitertools, range-v3, <algorithm> and <functional> make functional programming both easy and efficient in C++ in ways it was not prior to C++1[147]. I think Python made fp accessible by putting it in an imperative language which is concise and readable.
- agumonkey 8y agoabout 2, I remember some old lisp book (Queinnec L.I.S.P) said that if mutable state is entirely contained and invisible, you can forget about purity. It's cool that cpp is 'flattening' through fp idioms, you can avoid its complexity without leaving the country entirely.
- melling 8y agoMy understanding is that F# is a derivative of OCaml. https://stackoverflow.com/questions/179492/f-changes-to-ocaml https://stackoverflow.com/questions/179492/f-changes-to-ocam... http://web.archive.org/web/20080410181630/http://research.microsoft.com/fsharp/manual/ml-compat.aspx http://web.archive.org/web/20080410181630/http://research.mi... How’s F# adoption?
- fsloth 8y ago"How’s F# adoption?" Based on inferences it has a small, enthusiastic and talented userbase and has still language core developers bankrolled by Microsoft. There's been some worried discussion whether Microsoft wants to continue investing in it or not, e.g.: https://www.reddit.com/r/fsharp/comments/91gg6j/is_microsoft_serious_about_f/ https://www.reddit.com/r/fsharp/comments/91gg6j/is_microsoft... Personally I hope they would continue the investment.
- gaius 8y agoF# is available in Azure Notebooks so I guess it’s fully supported
- titanix2 8y agoMicrosoft is throwing everything on Azure these days, I won’t be surpised if a significant proportion of these services are discontinued in the next years.
- scns 8y agoWhy should they when it gets used and makes them money?
- fsloth 8y agoA usable industrial strength tool needs more than just the compiler and a repl. The main benefit of an industrial language is the entire toolchain including IDE with code higlighting, intellisense capabilities, debugging capabilities, etc. To provide these for F# in Visual Studio requires continuous investment. Hence, given the not-entirely-committed feel MS is emanating just now for it, if they don't feel supporting F# as a first class citizen on visual studio is worth the investment, they might orphan it to to open source developers. Who probably would hold good care of the core facilities, but would probably lack resources and interest to provide an entire industrial strength stack. I do hope this is not the scenario, and Microsoft will continue investing in the language as a first class citizen on visual studio.
- agumonkey 8y agoBest part of this is the very pragmatic set of problems. I loved the meijer haskell mooc too, a lot, but it's more about mind bending rather than more day to day programs.
- hazza1 8y agoI started this course but really struggled with their strong accents (although subtitles are available) Guess I know how the rest of the world feels now watching American tutorials.
- bjz_ 8y agoMost other English-speaking people in the world deal with different accents reasonably often in media and their lives, the American accent most of all. I think it's more that it's easy for American's to live in a bubble, because the country is so large - it's sometimes odd to see American media putting subtitles on strongly accented but otherwise perfectly intelligible english speakers, for instance.
- Tempest1981 8y agoBeyond the 2-minute intro video, the audio became very faint, with background noise like a fan humming. Made it tiring to listen to. (Does it get better later?)
- dmitriid 8y agoIf you’re on a Mac, it might be CoreAudio acting up. Try sudo kill-ing coreaudiod (disclaimer: I haven’t seen the video in question, but I had a similar problem with online videos in general)
- devmunchies 8y agoI don't see other videos other than the intro. It says the course doesn't start until next month.
- nraynaud 8y agoI am currently doing some interventions in some Ocaml code written by Big Co. The world is completely different between you writing your program in your corner, and stumbling in a codebase with a serious history and a task to do on it efficiently. It's not going quickly nor easily, and there is no real help from Jetbrains IDE.
- toolslive 8y agoit should at least offer things like "show-type-of-expression-at-current-cursor-position"
- nraynaud 8y agoIt doesn't, it colors some keywords, it tries to follow symbols, but doesn't know the difference between 'let rec' and 'let', so it's tricky.
- Drup 8y agoMaybe JetBrain doesn't, but lot's of editor do, thanks to merlin, including vscode.
- nraynaud 8y agoThanks, I'll download it, but it's really disruptive to switch IDE. (I do a lot of langages at the same time hence the jetbrains suscription) edit: it's a nightmare of dependency hell to install merlin, I'm giving up for now.
- AlexCoventry 8y agoWhat package manager? `opam install merlin` should just work. OCaml has a relatively immature ecosystem, but merlin is a great tool.
- nraynaud 8y ago
- amelius 8y agoIs it possible to enforce purity for parts of an OCaml program? Or is there always a way around? (Not saying this is bad, because for instance caching functionality is non-pure but still maintains the external quality of purity).
- bjz_ 8y agoThere is work being done to bring an algebraic effects system to OCaml, but it's slow going. I think because the people pushing it have a bunch of other things on their plates too. But it would be super nice to have!
- loxs 8y ago"This course will be held in English." No offence intended, but English, my ass! Although quite proficient, English is still a second language to me and this accent makes it quite unintelligible. I hope everything will be available in written form as well.
- accnumnplus1 8y agoGlad to see this I'm ditching Rust for OCaml. Rust has a core of violence-supporting antifa people, which is too much of a professional or business risk to be associated with.
- hellofunk 8y agoWhat are you talking about... “violence supporting”?!
- noisem4ker 8y agoHe's probably referring to these posts on Twitter: https://archive.is/BtDaA https://archive.is/BtDaA
- funfunfun 8y agoDoes anybody else think functional programming is just one end of the either/or fallacy? Maybe a trap for contemplative people? The ultimate goal of software is to build something useful. The "functional programming tutorial:real world uses" and "claims of superiority:adoption" ratios are suspiciously high.
- opnitro 8y agoI'd disagree (though it's certainly not the tool for every job). I think it has more to do with the old line that FP makes "the hard things easy but the easy things hard". It's a really different way of thinking about things that is intuitive if you're used to the imperative way of doing things.
- fhood 8y agoExclusively functional? Yeah, kinda. But I do like it when languages allow me to use functional paradigms internally, so that when a problem is really suited for it I have that option.
- lower 8y agoOCaml isn't very extreme in its approach. It's a functional language, but it also allows side-effects and has object with mutable state, for example. It's most certainly a language that is being used mainly to build things. See https://ocaml.org/learn/companies.html https://ocaml.org/learn/companies.html and https://ocaml.org/learn/success.html https://ocaml.org/learn/success.html for examples.
- specialp 8y agoThis is true to some extent (IMO Elm and Haskell) but I think at least being exposed to one functional language will make anyone a better developer in all languages. I started programming in Clojure, Clojurescript, and now messing around with OCaml. The primary language I use at work is Ruby. The aspect of FP that really helped me even be a better Ruby developer was just having way less shared state. When you have less shared state, and small functions doing one thing with as little side effects as possible it really makes code cleaner and it makes your software behave in much more predictable ways. I know what some are saying "Well that seems like what you should be doing anyway..." That is true but at least working with a FP language really drives this home and for me did more for code quality improvement than anything else. In fact now when I look at most Ruby code even in big high quality projects I am like why??? Ruby gives you so many ways to do things without shared state (blocks) yet so many choose to set instance variables all over, or store stuff in variables in memory. I still am not sold on strong static typing such as in Haskell, and yes I get the opinion of what you said about that community. I am not sure though if it is because I am bad at it, or it truly takes more work than it saves you in the future. I just find with FP as in Clojure and OCaml it gives me a lot of gain without ever getting in my way. So it is worth trying, and even if you keep working in a large imperative language, FP experience will help you not fall into the holes of large shared state.
- xvilka 8y agoThere is a work-in-progress second edition of "Real World OCaml" book [1], which has many small but vital updates corresponding to the modern state of OCaml and its infrastructure. Moreover, I recommend checking the Lwt [2] from the beginning for working with multithreading. OCaml Ctypes [3] library for creating FFI stubs without a single line of C and Cstruct [4] for working with C structures. If you want to interact with some Python code or script your OCaml program with Python - you can use Pyml [5] library. OCaml universe also has a good library for numbers crunching and scientific computing (including primitive Machine Learning) - Owl [6]. For writing OCaml instead of JavaScript, it is possible to use BuckleScript [7]. And if you are starting a new project in OCaml - I recommend using the most modern buildsystem - dune [8]. It is very simple to use and with a less overhead than others. I found also Angrstrom [9] is very useful for implementing binary and text format parsers. Utop [10] and ocaml-jupyter [11] are the best choice for experimenting, browsing the API and testing some small things. [1] https://dev.realworldocaml.org/toc.html https://dev.realworldocaml.org/toc.html [2] https://ocsigen.org/lwt/manual/ https://ocsigen.org/lwt/manual/ [3] https://github.com/ocamllabs/ocaml-ctypes https://github.com/ocamllabs/ocaml-ctypes [4] https://github.com/mirage/ocaml-cstruct https://github.com/mirage/ocaml-cstruct [5] https://github.com/thierry-martinez/pyml https://github.com/thierry-martinez/pyml [6] https://github.com/owlbarn/owl https://github.com/owlbarn/owl [7] https://bucklescript.github.io/ https://bucklescript.github.io/ [8] https://dune.readthedocs.io/en/latest/quick-start.html https://dune.readthedocs.io/en/latest/quick-start.html [9] https://github.com/inhabitedtype/angstrom https://github.com/inhabitedtype/angstrom [10] http://github.com/ocaml-community/utop http://github.com/ocaml-community/utop [11] https://github.com/akabe/ocaml-jupyter https://github.com/akabe/ocaml-jupyter
- devmunchies 8y agoYou recommend LWT, but the book you recommended teaches Async instead. The split between with libraries to use (e.g. stdlib vs Base) has been frustrating as I’ve been learning and needing to look up documentation.
- xvilka 8y agoI use Core/Base library but rarely use Async. In my opinion and experience (though a short one), Lwt has more features and better maintained by the community.
- magpi3 8y agoA bit offtopic but: has anyone used SML (https://www.smlnj.org/ https://www.smlnj.org/) for anything serious? I fell in love with this language in University long ago (in the 90s), but I have never seen anyone use it in the wild.
- shikoba 8y agoI'm sure that a big part of OpenModelica compiler is in SML.
- hackermailman 8y agoMathworks hires SML programmers for their various products that detect runtime errors and proof assistants for C/C++ programs
- cmrdporcupine 8y agoI tried OCaml first and then SML/NJ and I found SML/NJ to be a nicer language. But OCaml seems to have a lot more momentum behind its use.
- zem 8y agour/web is written in sml: http://www.impredicative.com/ur/ http://www.impredicative.com/ur/
- magpi3 8y agoThank you
- dang 8y agoPreviously: https://news.ycombinator.com/item?id=12423352 https://news.ycombinator.com/item?id=12423352
- a0 8y agoFor everyone interested in learning OCaml, there's a very active Discord community where you can ask questions: https://discord.gg/ZBgYuvR https://discord.gg/ZBgYuvR Join and say "hi"! :)
- cmwelsh 8y agoOCaml and Reason are beautiful languages. I actually applied to Jane Street hoping for a chance to use them more, but they weren’t interested in my resume. Is there a list of OCaml/Haskell/etc companies out there for us functional programming enthusiasts?
- evanrelf 8y agoI know of this list: https://github.com/erkmos/haskell-companies https://github.com/erkmos/haskell-companies
- pbiggar 8y agoDark is written in OCaml (and Elm, which is a similar functional language) and we're hiring: https://darklang.com/careers/ https://darklang.com/careers/
- 3rdAccount 8y agoWait...hiring to sell a Lang? I'm curious.
- pbiggar 8y agoThe business model is fairly easy though: sell infra. It's a lot to build, so we need a good team. We're currently 5, hiring 3 more engineers atm.
- fredcy 8y agoThe Tezos project uses OCaml to build the core network and protocol features (but not the smart contracts). Companies are starting to build products based around Tezos and OCaml knowledge will be valuable for some aspects of that. See https://gitlab.com/tezos/tezos https://gitlab.com/tezos/tezos for the code.