top | item 44405205

(no title)

rpeden | 8 months ago

F# has diverged from OCaml a bit, but they're still very similar.

I mentioned in a top-level comment that F#'s "lightweight" syntax is basically what I want when I use OCaml. I know ReasonML is a thing, but if I'm writing OCaml I don't want it to look more JavaScripty - I prefer syntax like "match x with" over "switch(x)" for pattern matching, for example.

I know some people dislike the way F#'s newer syntax makes whitespace significant, and that's fair. But the older verbose syntax is there if you need or want to use it. For example, something like

  let things = 
    let a = 1 in
    let b = 2 in
    let c = 3 in 
    doSomething a b c

should still work in F# like it would in OCaml.

discuss

order

yawaramin|8 months ago

> F#'s "lightweight" syntax is basically what I want

It's actually not that far off. For definitions that don't need to be self-referential you can use 'and':

    let things =
      let a = 1
      and b = 2
      and c = 3 in
      do_something a b c

rpeden|8 months ago

Thank you! I knew this, but of course blanked on it when I came up with an Ocaml example.

There are a few other places I prefer F#'s syntax, but overall it's not the reason I'd pick F# over OCaml for a project. It's usually mostly about needing to integrate with other .NET code or wanting to leverage .NET libraries for specific use cases.

Can't lose either way - they're both a please to work with.