Have you look at ELM ? That's a functional language for the web that enforce the last best practice of JavaScript web development. For me, it miss only a true module system. http://elm-lang.org/ 2017-12-10 19:12 GMT+01:00 Robert Muller : > The team developing ReasonML seems to be experimenting with concrete > syntax in an effort to make it feel as familiar and natural as possible to > JavaScript programmers. Seems like a good idea. But the present version > seems to hardwire parentheses awkwardly for function definitions and calls. > Parentheses are required for both function definitions and calls. So one > writes > > let incr(n) = n + 1 and incr(5) > > but not > > let incr n = n + 1 or incr 5 > > Fair enough, but for multi-argument functions the parser seems to unroll > the parenthesized items (both parameters & arguments) to leave curried > functions. E.g., > > let add(m, n) = m + n or equivalently let add = (m, n) => m + n > > then add(5, 3) is 8 as one would expect. But the (m, n) in let add(m, n) = > ... isn't a pattern matching a pair, it's the JS-style sequence of input > parameters and the definition unrolls to let add = (m) => (n) => ... . So > add(5) : int -> int and all three of add(5, 3), add(5)(3) and { let add5 = > add(5); add5(3) } are 8. There's probably a way to write an add function > of type int * int -> int, but I don't know how to write it. > > I'm wondering what the OCaml community makes of this. I find it awkward. > Bob Muller > > >