Fusion Authority Quarterly Update

Viewing By Entry / Main
January 9, 2007
About once a year, I tend to mention Haskell on my blog. I like functional programming languages - that was my research topic for three years after I graduated from university. Haskell is a very powerful functional programming language that has a number of available implementations and, as I discovered this weekend, a very active community.

Last time I messed with Haskell, I chose the nhc98 compiler because it was easily available for the PowerPC Mac. When Haskell had cropped up in discussions with not one, but two ColdFusion developers this week, I figured I'd install it on my new Intel Mac. Except nhc98 is not available as a binary distribution for the Intel Mac. Easy, I thought, download the source and build it myself. The build failed. The notes suggest using the ulimit command to remove the file-size limitation on the shell. OK. The build still failed. The notes say if you can't solve it with ulimit, use another Haskell compiler to help bootstrap the build.

Try as I might, I couldn't find an existing Intel Mac binary of any Haskell compiler. But there's an IRC channel listed on the Haskell web site. #haskell on freenode.net. I figured that #coldfusion is so helpful that I might as well try the #haskell channel... There were nearly 300 people in there! And, guess what? They were very happy to help me for several hours. First, they pointed me at an Intel Mac build of ghc (the Glasgow Haskell Compiler) which, incidentally, was contributed by a member of the Haskell community (i.e., built from source and submitted back). I installed it and it worked just fine. So far so good.

Then I installed hmake and hi (hmake interactive) which are build and shell tools for using Haskell compilers. I ran into problems with a library dependency. Again, the IRC channel folks were very helpful. Following their instructions, I removed the (obsolete) dependency and successfully built and installed the two hmake tools. Yay!

Then I went back to nhc98, determined to build that from source. I ran into several more dependency problems. Back to the IRC channel. Similar advice (nhc98 is old and the dependencies aren't needed when using newer compilers to bootstrap it). I finally got it built but, unfortunately, every file it generated just crashed. By this point, the IRC folks were wondering why I was bothering since nhc98 has really reached a dead-end. They pointed out that ghc has an interactive tool (ghci) anyway. So I admitted defeat and starting playing with ghci...

Some of the tutorials on the web features code that didn't work. A quick check in with the IRC channel and I learn that Haskell 98 had a flat namespace for libraries but since then the standard library ("Prelude") has been reorganized into a hierarchy of packages. We discussed some of the slight differences between Haskell 98 (per the tutorials I was trying to follow) and "modern" Haskell and I kept on learning.

One of the interesting things about the channel is that members are constantly swapping code fragments and experimenting amongst themselves with ways to solve problems. Very collaborative!

So, once again, I'll suggest to the curious among you to check out Haskell.

I'd also ask you to think about the difference between the #coldfusion channel on DAL.net and the #haskell channel on freenode.net. #coldfusion has 20-30 members most of the time and occasionally gets as high as 50. For the most part it is banter about everyday life but folks will rally and focus if someone comes on asking a ColdFusion question. #haskell has 270-300 members and discussion is mostly about Haskell. We're all so very passionate about ColdFusion and we like helping newbies. Why are so few CFers on IRC compared to Haskell developers?

Comments

Maybe CF'ers just don't do IRC?! I'm guessing its a communtiy/technology adoption issue.

Talking of which, given that I've NEVER tried IRC, what client would you recommend for an Intel Mac?


Of course, it could be that people who are only skilled in Haskell programming can't get jobs in companies and hence are sufficiently underemployed to spend all day on IRC


But there again, it could be that the huge efficiency gains in using a functional programming language means that they can do the work of a ColdFusion developers in a fraction of the time, thus leaving the rest of the time free to hang out on IRC.

Hmmmm.


My guess would be that not many CF folks even know about that IRC channel: it's certainly the first time I've ever heard of it.

Could also be that CFers are more comfortable with forums and blog discussions as a means of communication, which give you a little more time to think about your response and are easier to search through or save for reference.

--Brian


I think IRC is really only familiar to those of us who spent too much time in university computer science departments :) Compared to languages that are less-often used for business or commercial development, the CF community probably has a lower population of those people than, say Eiffel, Smalltalk, or Haskell.


For Intel Macs (and PPC Macs too): Colloquy (from colloquy.info).


Cool - thanks!


Thanks!


I might be on a limb here, but I am going to suggest that the reason CFers dont use IRC is that IRC is kind of an older-school-ish technology/platform/app infrastructure, etc. Its old-news to *nix gear-heads (some could say hard-core users / developers). Since the majority of CFers are Windows, and Windows is seen as a non-hard-core development platform, CFers dont use IRC, by extension.

As another example: I have leaped into the Ruby on Rails world; its a fact that Ruby (and especially Rails) is much more geared towards *nix, it runs best on BSD/Linux/Mac OS X, etc. In addition, the IRC channels #rubyonrails and #ruby have upwoards of 250-300 users at any one time and most questions can be answered very quickly.

Is there a pattern here? Or I am just a jaded, anti-Windows cynic?


@Cody, well, I don't find Windows to be a very productive developer platform so I sympathize with your thoughts.

It might well be that *nix developers are more aware of and more comfortable with "old-school" text-based stuff - look at all the command line source code control and package installation tools around. I think there's also a lot more open source activity on *nix (for pretty obvious reasons) which in turn leads to a preference for non-proprietary technology (IRC and Jabber rather than AIM, MSN and YIM for example).


I recently took on Haskell as my new language for 2007. The liveliness and helpfulness of the IRC channel were a significant factor -- I actually checked out the channel of each language I was considering.

I'm on the Mac as well and got similar help in locating the (PPC) binary of GHC and GHCi that I'm using now.

I don't know if you noticed this during your time in the channel, but they aren't just pasting code -- the channel bot ("lambdabot") serves as, among other things, an in-channel Haskell interpreter.

There's also a big Haskell event starting tomorrow, so that will probably make the channel even more lively:

http://haskell.org/haskellwiki/Hac_2007


@Paul, yes, there seem to be several bots on channel at times.

On #coldfusion, cfmx7bot serves a similar purpose to the classic 'egg drop' IRC bit. It's written in ColdFusion of course (just like lambdabot is written in Haskell).

Also like lambdabot, it can interpret expressions for you using the !calc command (it filters the expression quite heavily in an attempt to prevent malicious code but it may not actually be perfect so I have to trust folks here).


@Cody & Sean: Whatever platform you are most familiar with will be the most productive platform for you.

I used IRC for many years, never really having been a *nix person (never ran *nix as a desktop).

It's an old, insecure and unreliable technology and at one point was being so maliciously attacked that many of us just stopped using it.


Post Your Comments
Name:
Email Address:
Comments
*** Please note that all comments require moderation so it may be some time before your comment posts to this blog! ***
Remember My Information:
 



Hosting provided by