upvote
I don't see how:

Racket:

  > (define (fact n)
      (if (= n 1)
          1
          (* n (fact (- n 1)))))
  > (fact 6)
  720
OCaml:

  # let rec fact = function
      | 1 -> 1
      | n when n > 1 -> n * (fact (n - 1))
    in fact 6;;
  - : int = 720
reply
Whenever someone complains about not being able to use a slightly different syntax, I assume they just don't have any neuroplasticity anymore.
reply
I think syntax matches with our brains or not. I think anyone is capable of learning any syntax. The question is whether they want to. At some level, programming is art.
reply
Haskell:

    fac n = product [1 .. n]
reply
Obligatory "The Evolution of a Haskell Programmer":

https://people.willamette.edu/~fruehr/haskell/evolution.html

reply
That's an odd way to rewrite most of the SfICPICP exercises for scheme.
reply
From my limited SMLNJ experience I think for something as simple as factorial, it is nearly the same. Both have TCO, recursion, inner functions, pattern matching and those good things. You can structure the code the same way.
reply
Even as simple as

  fac 1 = 1
  fac n = n * (fac (n - 1))
which is a working Haskell implementation?

I mean, in Scheme it is longer to write. I enjoy Lisps and use Emacs for everything, but Haskell can be as terse, or even more terse. (Which is not always a good thing.)

reply
I think in terms of token count it comes out to about the same; and Lisp admits fewer kinds of tokens.
reply
> I tried some ML language once, it's difficult even to write a basic factorial example

What do you mean? It's one of the first things taught in any tutorial for the ML family or Haskell.

reply