What do you think to stop calling Elm "functional language"?

Bellow is my perspective by observing Japanese programming community.
Because I’m not familiar with foreign communities, please tell me your opinions.

I believe that using “functional language” to explain Elm has lots of defeats, especially after 0.17.
For functional beginners, they tend to think “functional language” is too difficult to learn, which prevent Elm to be mainstream.
For functional lovers, especially Haskell lovers, they expect Elm to have unnecessarily advanced language features like type classes, type level programming, etc.

I recently use the word “type safe configuration language” to explain Elm to avoid above misunderstandings.
In functional language like Haskell, the most difficult and interesting part of programming is how to handle IO related operations in pure functions, but Elm does not need to handle such operations because The Elm Architecture handles it by receiving configurations from your Elm code.
So, Elm is just a subset of imperative language rather than a “functional language”, or also a configuration language such as yaml and json excepting it has strong types.

What do you think to stop using “functional language” and using “type safe configuration language”?

Edit:
Thanks for your answers, I realized that “configuration language” is confusing.
So, my interest is just whether should we use the word “functional language” to refer Elm.
Though elm-lang org page, the “slogan” does not contain the word “functional programming”, but “An Introduction to Elm” says “Elm is a functional language that compiles to JavaScript”, and also there is a repository functional programming in Elm.

To make your point clear, I would like to ask you the three questions bellow.

  1. What do you think if anyone says “Elm is an Alt-JS similar to Haskell.”
  2. Do you think programmers who are not familiar with functional style tend to image “functional language” is something as difficult and “strange” as Haskell?
    (I write Haskell in my jobs, so I personally does not think Haskell is so difficult and strange itself, but I feel Elm is more easy than Haskell.)
  3. What do you think to avoid using the word “functional language”?
1 Like

First of all, elm is much more than just a configuration language. Elm can do effects, its way of performing IO is different from haskell, because we use a functional reactive architecture, but it’s far removed from JSON when you write actual apps. JSON can’t send http requests, elm can.

Secondly, should we call things what they are? This question comes up for instance
when we use mathematical ideas in programming. The prime example is Monad. The Haskell community believes quite strongly that we should just call this concept what it’s called in mathematics. In elm we commonly don’t say “it is a monad” but say “it has andThen”: We don’t hide the existence of a pattern, but try to use concrete language rather than abstract concepts to convey what something means.

This is a hard question, and the haskell community’s position makes sense for haskell’s original goal (a research language) and users. Because elm is younger and focused on being easy to learn we make other choices

Finally, it probably makes more sense to show people what elm can do, rather than saying “it is functional” it might be better to say “our application has no runtime exceptions”. Only people who have experienced functional programming know what that term means. For newcomers, you have to make elm relevant for them.

I’m observing Japanese community too, but have a different perspective. Seeing last year’s advent calendar, many beginners are getting interested in Elm these days. Great! So I don’t worry about it. I’ve never heard people prevent Elm just because it is called “functional programming”. I guess they just think Elm is very hard to learn (…and actually hard sometimes), which is very natural reason.

Also, I think “type safe configuration language” will be more confusing. I don’t think Elm is similar to languages like JSON and YAML. People consider “configuration” is a single static value, which does not contain any variables and functions. So, using the word “configuration” might make people think that Elm has very limited power and the main logic is implemented in JS or something.

Finally, I don’t think Elm is imperative. If that is true, what language is truly functional? Only Haskell? We don’t need to fear about how Haskell people expect. Our main target is JS developers :slight_smile:

1 Like

Thank you @folkertdev and @jinjor !

To make the point clear, could you answer the three questions bellow?

  1. What do you think if anyone says “Elm is an Alt-JS similar to Haskell.”
  2. Do you think programmers who are not familiar with functional style tend to image “functional language” is something as difficult as Haskell?
  3. In your perspective, are there people who avoid to use the word “functional language”?
    (Some people in Japan, especially in Haskell community, tend to avoid the word because it is confusing. e.g., Haskell and Lisp are both “functional language” but completely different.)

What do you think if anyone says “Elm is an Alt-JS similar to Haskell.”

It is something I might say to people familiar with Haskell/FP, but never to someone outside of that group. They’ve probably heard about haskell, but for them it makes more sense to highlight different aspects of the language.

I also think fewer and fewer people say things like the above now. At the beginning, elm looked a lot like haskell syntactically, so people assumed it would be like haskell in terms of culture too. Evan has tried very hard to move the culture in a different direction.

Do you think programmers who are not familiar with functional style tend to image “functional language” is something as difficult as Haskell?

I assume they don’t really know anything about haskell at all. At this point, most languages have embraced functional concepts like maps and filters. I think it also isn’t the main selling point for elm for newcomers.

  • In your perspective, are there people who avoid to use the word “functional language”?
    Yes, Evan.

For most people “language x is functional” does not imply “language x is good”, and saying “elm is functional” is similar to saying “python has meta-classes”. If you don’t know what those are, it doesn’t mean anything.

When you look at the elm-lang.org page, the “slogan” is currently

A delightful language for reliable webapps.

It doesn’t mention functional, nor strongly-typed or any technical characteristic of the language.
I think this is the proper way to communicate with people that (most likely) don’t really know any of the technical terms and details.

I got it.
One of the reason I created this topic is An Introduction to Elm says “Elm is a functional language that compiles to JavaScript.”.
Guessing by your explanations, this is a sort of out-of-dated descriptions and we should not use word “functional language”, isn’t it?

  1. They are not good at selling things :stuck_out_tongue:
  2. Some people think so but I don’t know how many people think Haskell is such difficult.
  3. I heard AWS people used the word “Exhaustively testable pseudo-code” instead of “formal methods”. The reason is former sounds more familiar to their coworkers.
1 Like

Elm is functional. So we use the word functional.

If using the correct word is causing someone else problems, then that other person has the problem. Fix their understanding.

1 Like

I think you’re confusing some things together. But that’s alright, we can explain.

unnecessarily advanced language features like type classes, type level programming, etc.

Type classes has nothing to do with functional programming in general. They are way to define ad hoc polymorphism. Also calling it as unnecessarily seems a bit confusing to me. Some type of higher polymoprhism is needed and elm has it as well in things like comparable or number it’s just that such concepts are hardcoded to compiler and not user definable (similar approach was used by many other statically typed languages like Java for insance). In my optinion user definable ad hoc polymorphism is much nicer solution anyway it introduces concept that might be hard for beginers. In the end I think it’s possible to write application without type clasess and Elm is designed in this way we should either accept this or change language. I’m not pushing type classes to elm in any way (yet I still have a right to say it’s more elegant solution in my opinion).

I recently use the word “type safe configuration language”

I think this is missleading. First language can’t really be type safe. it can only support type safety. Also I’m not sure what configuration means. Language is turing complete, based on lambda calculus, ML and system F. I’m not sure what can be more functional that this.

In functional language like Haskell, the most difficult and interesting part of programming is how to handle IO related operations in pure functions, but Elm does not need to handle such operations because The Elm Architecture handles it by receiving configurations from your Elm code.

First, in Haskell IO works in very similar way in this regard. A Program produces “side-effects” as data and these data are turned into real side-effects by runtime. Second, it’s not true that in Elm “the architecture” receives configuration. Elm program is composed from functions. Those functions takes data and produces different data. This is called program not configuration.

Elm is just a subset of imperative language rather than a “functional language”

This is definitely not true. In my opinion Haskell is maybe even more imperative then Elm or at least do notation gives Haskell more imperative feel when you work with IO.

Frankly I think that stop calling it functional language is very bad idea. I understand where ideas like this comes from and frankly I think it’s maybe starting to get out of hands. Personally I hope we will never get to the point where Evan would seriously start to consider to stop using terms like functional. For sure there is some psichology in adopting laguage but it sholdn’t be the only thing to consider. I would like to keep programming more closer to exact science then to astrology.

I know I’ve used some terms you’re probably not familar with but don’t be affraid. Have a look on wikipedia and even if that doesn’t help don’t worry. From my experience it’s good to know about existence of concepts you don’t understand yet. One day it will all click and you’ll realize how simple it all in fact is. I’m definitely for being beginer friendly. I’m just also against hiding those amazing concepts from people who might be interested in learing it.

https://twitter.com/jdegoes/status/928608674657976325

admin hat: Hi all, it’s OK to be direct but let’s remember to debate concepts, not people. This thread is making my flame-detector beep.

I’ve also changed the topic to “Request Feedback”.

3 Likes

To tell the truth, I’m writing Haskell and Elm in my jobs, so I can understand and agree with your detailed explanations.
I do not have an ability to tell my thoughts and ask questions properly :persevere:

Thanks for you and other answers, I at least realised that calling Elm “configuration language” is confusing.
So, I’m just interested in whether we should use “functional language” or not.

To make your point clear, could you answer the two answers bellow?

  1. What do you think if anyone says “Elm is an Alt-JS similar to Haskell.”
  2. Do you think programmers who are not familiar with functional style tend to image “functional language” is something as difficult and strange as Haskell?

don’t worry. I have difficulties express my thoughts (especially in english) as well.

If you want to avoid term functional I would suggest to use declarative instead.

What do you think if anyone says “Elm is an Alt-JS similar to Haskell.”

I’m guilty. I do it. But I also state with simpler type system and without monadic IO. Anyway I use this term not because I want to scare people. In fact I think many folks are interested in learning Haskell. They’re just affraid that it’s too complicated. I’m selling Elm as the best language to get yourself familiar with typed functional programming. And based on experience I think it works. From people I know this is the most common reason why they considered trying Elm out but it might be biased because of the social circles.

Do you think programmers who are not familiar with functional style tend to image “functional language” is something as difficult and strange as Haskell?

I think they’re excited about learning it in friendly way.

3 Likes

If Elm wasn’t referred to as a functional language, I never would have found it. My FP background is in ML, and I read somewhere that there was this new Elm thing which was a functional language like ML and could be used for building web applications. That got me really intrigued to try it out, because of my previous functional programming experiences.

I think the answer depends on for what, to whom and how you are talking about Elm. What kind of situation is in your mind? With this question answered, we can make this discussion more specific.

For example, let’s say you want to invite more people to learn Elm. Every person has a different background. For someone who is familiar with or wants to learn functional programming, probably it makes sense to say it’s “functional” because it is true and they will like it. For a programming beginner, “functional” won’t help much because that person may not know what it means. Also, if you are talking to someone in person, you can explain Elm in different ways reacting to the person’s responses.

Here’s a good link for some historical context on the subject: https://groups.google.com/d/topic/elm-dev/oxsjzUAzNiU/discussion

1 Like