
Haskell is considered by many as an inflexible language [1] . I describe a flexible language as one that supports any design you want (even a bad one) - if you can think it, you can code it and run it (bugs and all). I share this opinion about Haskell but pursue it because I feel that one day it will open up and let me think more about the problem and less about how to get GHC to approve it. So I guess the question to you practitioners is: Would you agree that it is a rigid language as describe in the link below, or is that just an illusion that goes away with experience? -deech [1] http://therighttool.hammerprinciple.com/statements/this-language-has-a-very-...

I'm still sort of a beginner with Haskell, but ere are my thoughts. In the
sense you mean it, yes Haskell could be considered inflexible because it
makes it easier to implement a functional design and harder to implement an
imperative design. But if I were to go back to Java now, I would find it
very inflexible because it makes it very difficult to functional design, and
very easy to do imperative design. I would miss features like functors,
monads, and lazy evaluation.
On 18 May 2010 01:22, aditya siram
Haskell is considered by many as an inflexible language [1] . I describe a flexible language as one that supports any design you want (even a bad one) - if you can think it, you can code it and run it (bugs and all).
I share this opinion about Haskell but pursue it because I feel that one day it will open up and let me think more about the problem and less about how to get GHC to approve it.
So I guess the question to you practitioners is: Would you agree that it is a rigid language as describe in the link below, or is that just an illusion that goes away with experience?
-deech
[1] http://therighttool.hammerprinciple.com/statements/this-language-has-a-very-... _______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners

To put it another way... If you try to use an object-oriented approach in Haskell, you're going to find the experience a little frustrating, and you'll feel the language is rigid. If you try to use a functional approach in Java, C++, etc., you're going to find the experience a little frustrating, and you'll feel the language is rigid. A few weeks ago I did a bit of PHP programming for a client, and discovered that PHP won't warn you if you use a variable without declaring it. Now that's what I call flexible! But instead of rejoicing in that flexibility, I was annoyed.

Aditya, I have been programming in imperative languages for 20+ years and Haskell for about 2 years, and I've written a lot of it. I've never found Haskell restricting. Twice I have decided that a dynamic type was needed, and in many cases I've used object-oriented approaches in Haskell where it makes sense. This is actually fairy often. One example is a web widgets library where each widget had different 'render', 'parse', etc methods. Doing OO in Haskell isn't hard at all, in my opinion. You just use a data structure of functions. If you want it to have mutable state, you use an IORef (but it really isn't necessary). It's more typing than usual Haskell, but it still beats Java. Python would be more succinct than both. I've also written things very imperatively in IO, and found I could do anything I liked. I can think of some very small parts of programs where it might have been a little easier in Java or Python, but not by much, and Haskell's other advantages generally offset it. On occasions I've realized that the design wasn't going to work, and I needed to get some data from A to B. In other languages, you can use a global variable or singleton (same thing). In Haskell it means a bit of re-design. But the thing is, it's so easy to refactor in Haskell, that the extra work doesn't matter much. Your code is already modular at every level, so it's easy to move things around. When your code never gets a chance to get messy, and the type system doesn't let you break anything that previously worked, refactoring becomes a pleasure instead of a chore. So Haskell's inflexibility actually gives you the ability to rearrange your program effortlessly. That is, you get a lot in return. I could probably add that Haskell's inflexibility is determined by the types you give things. You can restrict yourself as much or as little as you like, but Haskell allows you to restrict yourself a lot more than other languages do. Steve On 18/05/10 12:22, aditya siram wrote:
Haskell is considered by many as an inflexible language [1] . I describe a flexible language as one that supports any design you want (even a bad one) - if you can think it, you can code it and run it (bugs and all).
I share this opinion about Haskell but pursue it because I feel that one day it will open up and let me think more about the problem and less about how to get GHC to approve it.
So I guess the question to you practitioners is: Would you agree that it is a rigid language as describe in the link below, or is that just an illusion that goes away with experience?
-deech
[1] http://therighttool.hammerprinciple.com/statements/this-language-has-a-very-... _______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners

He Aditya, I am also a beginner in Haskell (6 months now) and I must say Haskell is anything but restrictive to me. It let me create my own operators. It lets met define polymorphic functions. I can use dynamic features, if I want, but don't need to. I can even program imperative style, when I need it. But it is seldom necessary. Sometimes for performance. It is relative easy to design my own (embedded) language. One of the most flexible and powerful design pattern there is. With record syntax I can change haskell in a OO language. With monads I can make it into an imperative language. My first haskell program was written in an imperative style. At first I hated the typesystem, I think people refer to that. But now I sometimes using haskell for my work and it saves me a lot of time. And it explains what functions do. *Haskell is difficult to write, but easy to read. While php is easy to write, but difficult to read.* I miss those features in php. I even tried to invent an typesystem in php by creating classes for all kind of types, but it was too slow (unfortunately). Maybe there are better ways. I wrote an interface with Text.Json to PHP and pipes, so I can communicate between the two. This works reasonable. If I shoot myself in the foot at the php side, haskell mostly wont accept it. And I love all those structures from category theory. At first it was really difficult to use (I have a experimental physics background, so I haven't met them in my study), but now I am really missing them in other languages, because they actually provide flexibility and reusability. I can write functions, which work on all functors due to polymorphism. On the down side some things are difficult. Lazyness has still some strange black magic feel to it. Especially space leaks, which are quite easily detected by the profiler, but are quite annoying. It is useful, but difficult to reason about. I am still struggling sometimes with arrays, every time I use them I have to look them up. But that is probably because it isn't really natural to the language. Data.Map is often a good alternative for most goals. So I wouldn't say haskell is particularly rigid. Well it is in its typesystem and the way it handles side effects. But I don't see a disadvantage in that. It catches bugs. I have never be affraid that some unknown lib suddenly returns a string instead of a integer. But I have to say at first I found haskell had a rigid feel over it, but that was because I had to unlearn my imperative thought patterns. The two paradigms clashed in my mind. The rigidity emerged from the fact that I couldn't do stuff the way I was used too. With kind regards, Edgar

Am 18.05.10 02:22, aditya siram wrote:
Haskell is considered by many as an inflexible language [1] . I describe a flexible language as one that supports any design you want (even a bad one) - if you can think it, you can code it and run it (bugs and all).
I share this opinion about Haskell but pursue it because I feel that one day it will open up and let me think more about the problem and less about how to get GHC to approve it.
The key point of the "rigidity" is that it forces you to think about the problem. If GHC does not approve my code, then it's either a typo manifesting as a type error, or it's a much deeper problem that highlights that I didn't think enough about it. And with a strict typing discipline, something else begins to happen: "Still, as usual, the types were a remarkable aid to writing the code: when we finally agreed on the types presented above, the code almost wrote itself." Ramsey, Dias, Peyton Jones. Hoopl: A Modular, Reusable Library for Dataflow Analysis and Transformation. http://tinyurl.com/hoopl-dataflow [pdf] Regards, Heinrich Apfelmus -- http://apfelmus.nfshost.com

"Aditya" == aditya siram
writes:
Aditya> Haskell is considered by many as an inflexible language [1] Aditya> [1] Aditya> http://therighttool.hammerprinciple.com/statements/this-language-has-a-very-... Maybe, but that reference describes it as rigid, not inflexible. -- Colin Adams Preston Lancashire () ascii ribbon campaign - against html e-mail /\ www.asciiribbon.org - against proprietary attachments

Probably dumb question, but was it the difference between rigid and
inflexible in this context (I am not native english speaker)?
Google define gives me this:
Rigid means:
- incapable of compromise or flexibility
- inflexible: incapable of adapting or changing to meet circumstances; "a
rigid disciplinarian"; "an inflexible law"; "an unbending will to dominate"
On Tue, May 18, 2010 at 11:51 AM, Colin Paul Adams wrote: "Aditya" == aditya siram Aditya> Haskell is considered by many as an inflexible language [1] Aditya> [1]
Aditya>
http://therighttool.hammerprinciple.com/statements/this-language-has-a-very-... Maybe, but that reference describes it as rigid, not inflexible.
--
Colin Adams
Preston Lancashire
() ascii ribbon campaign - against html e-mail
/\ www.asciiribbon.org - against proprietary attachments
_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://www.haskell.org/mailman/listinfo/beginners --
Flatliner ICT Service,
Email: Edgar.klerks@gmail.com,
Tel: +31727851429
Fax: +31848363080
Skype: edgar.klerks
Website: flatlinerict.nl
Adres: Koelmalaan 258,
1813JD, Alkmaar
Nederland

"Edgar" == edgar klerks
writes:
Edgar> Probably dumb question, but was it the difference between Edgar> rigid and inflexible in this context (I am not native english Edgar> speaker)? Edgar> Google define gives me this: Edgar> Rigid means: Edgar> * incapable of compromise or flexibility * inflexible: Edgar> incapable of adapting or changing to meet circumstances; "a Edgar> rigid disciplinarian"; "an inflexible law"; "an unbending Edgar> will to dominate" Interesting. that's not what I would expect. Wikipedia seems more on the ball to me. -- Colin Adams Preston Lancashire () ascii ribbon campaign - against html e-mail /\ www.asciiribbon.org - against proprietary attachments

On Tuesday 18 May 2010 12:13:20, Colin Paul Adams wrote:
"Edgar" == edgar klerks
writes: Edgar> Probably dumb question, but was it the difference between Edgar> rigid and inflexible in this context (I am not native english Edgar> speaker)?
Edgar> Google define gives me this:
Edgar> Rigid means:
Edgar> * incapable of compromise or flexibility * inflexible: Edgar> incapable of adapting or changing to meet circumstances; "a Edgar> rigid disciplinarian"; "an inflexible law"; "an unbending Edgar> will to dominate"
Interesting. that's not what I would expect
Wikipedia seems more on the ball to me.
Could you elaborate a bit, please? Which articles in Wikipedia, for example (the disambiguation page for rigidity gives like explanations [excepting technical terms in mathematics], I haven't found an article for inflexible[ibility], the wiktionary definition is alike again)? I thought rigid and inflexible are fairly closely related, though not synonyms. Google define seems to agree.

Yes I would agree that rigidity and flexibility are closely related,
but I think in this case the connotation is more important.
Rigid can negatively connote an imposing of your will onto others, and
a general unwillingness to adapt to a situation or take advice.
Flexibility has the opposite connotation and in this light they are at
odds.
On the other hand rigid positively connotes rigor, having an
unwavering standard of quality. From this point of view something can
be rigid and flexible - and perhaps Haskell is best seen in this
light. It lets you do whatever you want so long as your ideas are
pretty clear but it isn't forgiving to fuzziness of thought. That is
frustrating to beginners like me whose thoughts are eternally fuzzy
but I know this is my problem and not the languages'.
-deech
On 5/18/10, Daniel Fischer
On Tuesday 18 May 2010 12:13:20, Colin Paul Adams wrote:
> "Edgar" == edgar klerks
writes: Edgar> Probably dumb question, but was it the difference between Edgar> rigid and inflexible in this context (I am not native english Edgar> speaker)?
Edgar> Google define gives me this:
Edgar> Rigid means:
Edgar> * incapable of compromise or flexibility * inflexible: Edgar> incapable of adapting or changing to meet circumstances; "a Edgar> rigid disciplinarian"; "an inflexible law"; "an unbending Edgar> will to dominate"
Interesting. that's not what I would expect
Wikipedia seems more on the ball to me.
Could you elaborate a bit, please? Which articles in Wikipedia, for example (the disambiguation page for rigidity gives like explanations [excepting technical terms in mathematics], I haven't found an article for inflexible[ibility], the wiktionary definition is alike again)?
I thought rigid and inflexible are fairly closely related, though not synonyms. Google define seems to agree.
_______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners

G'day all. The trouble with calling a programming language "rigid" is that it could either mean that you need to re-think some assumptions about how you program compared to the languages you know, or it could mean that it's a Turing tarpit. Sometimes, even experts find it hard to tell the difference until they've used the language for a while. Andrew Bromage
participants (8)
-
aditya siram
-
ajb@spamcop.net
-
Amy de Buitléir
-
Colin Paul Adams
-
Daniel Fischer
-
edgar klerks
-
Heinrich Apfelmus
-
Stephen Blackheath [to Haskell-Beginners]