Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

I'm major in Math and I had learned haskell for one week. But I'm unaccustomed to its coding style. I saw many people said if you want to master functional programming, then you shall use haskell. Some said the monad of haskell is highly related to the category theory in math. But I think I perfer Mathematica's programming style, syntax and design much more then haskell. And I'd read Mathematica's offical document for many chapters few months ago. I summarize my question below.

  1. Logically speaking, everything that haskell can do is also a piece of cake for MMA?
  2. Does MMA have monad? Does monad really matter?
  3. Haskell and MMA are both of functional programming languages. If a person want to study functional programming deeper, he better choose haskell rather then MMA?
  4. I think if someone learn haskell very very well, he may not claim himself automatically to be a MMA expert. But is it true vice versa? If I learn MMA very well in the future, do I have stable ability or knowledge of FP(thus Haskell) languange?
share|improve this question

closed as primarily opinion-based by m_goldberg, Michael E2, Sjoerd C. de Vries, Öskå, Verbeia Jun 26 at 21:08

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

FP layer in Mathematica is rather peculiar, as I briefly explained here. There are a number of advantages in learning FP using a general purpose FP language, such as Haskell (I don't know Haskell yet). You will benefit from real general support for persistent data structures, currying, laziness, real type system, and advanced abstractions. Also, strong developer community and tons of high quality code to learn from. And, far less perplexing performance model. –  Leonid Shifrin Jun 26 at 10:00
I actually think that someone who knows one or a few general-purpose functional languages really well, can quickly become really good in Mma too. The sooner you broaden out, the better programmer you become, in Mma or other language. The important thing IMO is to become pragmatic and clearly see advantages and flaws of any given language / tool, for a given task. Also, one needs to be able to distinguish real problems, inherent to the task at hand, and problems generated by the system or language being used, which have nothing to do with the essence of your task / problem proper. –  Leonid Shifrin Jun 26 at 10:06
If @LeonidShifrin doesn't know Haskell, then clearly the title question has been answered. –  bobthechemist Jun 26 at 13:27
i think the question itself speaks volumes. If you ask is learning new stuff useful the answer is: Yes. Trying to avoid something because it feels like a burden in itself is the mistake. You should go for it because it feels awkward, thats how you know you learn new things. By the time you overcome this feeling your 90% done. –  joojaa Jun 26 at 14:35
I am confused by this question. You say you are a math major. It seems to me, you should be asking your self then, which tool will make it easier for me to solve my math problems at schools. Simply look at the type of problems and projects you have to do at school, and see if a computer algebra system like M will make it easier or not to solve these problems vs. if you used the other language. Suppose you want to solve an ODE or find Taylor series expansion. Which language makes this easier for you? If it Haskell, then learn it. If it is Mathematica, then learn Mathematica. –  Nasser Jun 26 at 16:38
add comment