Internet Relay Chat is a worldwide text chat service with many thousands of users among various irc networks.
The Freenode IRC network hosts the very large #haskell channel, and we've had up to 1046 concurrent users, making the channel consistently one of the most popular of the thousands of channels on freenode. One famous resident is Lambdabot, another is hpaste (see the Bots section below).
The IRC channel can be an excellent place to learn more about Haskell, and to just keep in the loop on new things in the Haskell world. Many new developments in the Haskell world first appear on the irc channel.
Since 2009, the Haskell channel has grown large enough that we've split it in two parts:
- #haskell, for all the usual things
- #haskell-in-depth , for those seeking in depth, or more theoretical discussion
As always, #haskell remains the primary place for new user questions.
Example, using irssi:
$ irssi -c chat.freenode.net -n myname -w mypassword /join #haskell
Tip, if you're using Emacs to edit your Haskell sources then why not use it to chat about Haskell? Check out ERC, The Emacs IRC client. Invoke it like this and follow the commands:
M-x erc-select ... /join #haskell
The #haskell channel is a very friendly, welcoming place to hang out, teach and learn. The goal of #haskell is to encourage learning and discussion of Haskell, functional programming, and programming in general. As part of this we welcome newbies, and encourage teaching of the language.
Part of the #haskell success comes from the fact that the community is quite tight knit — we know each other — it's not just a homework channel. As a result, many collaborative projects have arisen between Haskell irc channel citizens.
To maintain the friendly, open culture, the following is required:
- Low to zero tolerance for ridiculing questions. Insulting new users is unacceptable. New Haskell users should feel entirely comfortable asking questions.
- Helpful answers should be encouraged with
name++karma points, in public, as a reward for providing a good answer.
- Avoid getting frustrated by negative comments and ambiguous questions. Approach them by asking for details (i.e. Socratic questioning), rather than challenging the competence of the writer (ad hominem). As the channel grows, we see a diverse range of people with different programming backgrounds getting accustomed to Haskell. Be patient and take satisfaction from spreading knowledge.
The #haskell channel appeared in the late 90s, and really got going in early 2001, with the help of Shae Erisson (aka shapr).
In addition to the main Haskell channel there are also:
The Freenode staff have asked us to consolidate language channels into the "#haskell-" namespace rather than have them continue on in the "#haskell." namespace. Eventually the language channels below listed with "#haskell." will have to move.
|#haskell-br||Brazilian Portuguese (pt_BR) speakers|
|#haskell.cz||Czech speakers (UTF-8)|
|#haskell-fr||French speakers (note the hyphen! in the channel name)|
|#haskell-id||Indonesian speakers (note the hyphen! in the channel name)|
|#haskell-it||Italian speakers (note the hyphen! in the channel name)|
|#haskell.ru||Russian speakers. Seems that most of them migrated to Jabber conference (email@example.com).|
|#haskell_ru||Russian speakers again, in UTF-8. For those, who prefer good ol' IRC channel with a lambdabot.|
|#haskell.tw||Chinese speakers (mainly in Taiwan)|
|#chicagohaskell||Chicago Haskell programmers group|
|#haskell-beginners||Haskell people focused on teaching and learning Haskell, not just beginners.|
|#haskell-offtopic||Haskell people talking about anything except Haskell itself (no TLS required)|
|#haskell-blah||Haskell people talking about anything except Haskell itself (TLS required)|
|#haskell-game||The hub for Haskell-based game development|
|#haskell-in-depth||slower paced discussion of use, theory, implementation etc with no monad tutorials!|
|#haskell-iphone||Haskell-based iPhone development|
|#haskell-apple||projects that target iOS or OS X using Haskell.|
|#haskell-lisp||Haskell Lisp - projects that are creating Lisps written in Haskell, or Haskell implementations written in Lisps.|
|#haskell-llvm||For projects using Haskell and LLVM|
|#haskell-web||Friendly, practical discussion of haskell web app/framework/server development|
|#haskell-robotics||Discussion about the use of Haskell for robotics applications.|
|#arch-haskell||Arch Linux/ specific Haskell conversations|
|#fedora-haskell||Fedora Haskell SIG|
|#gentoo-haskell||Gentoo/Linux specific Haskell conversations|
Projects using haskell
|#darcs||Darcs revision control system|
|#hackage||Haskell's software distribution infrastructure|
|#happs||Happstack web framework|
|#hledger||hledger accounting tools and library|
|#leksah||Leksah IDE for Haskell development|
|#perl6||Perl 6 development (plenty of Haskell chat there too)|
|#snowdrift||Snowdrift.coop Yesod-based web platform for funding free/libre/open works, welcomes Haskell volunteer devs including beginners|
|#snapframework||Snap web framework|
|#xmonad||Xmonad tiling window manager|
|#yesod||Yesod web framework|
|#yampa||Yampa Arrowized FRP|
There are various bots on the channel. Their names and usage are described here.
Lambdabot is both the name of a software package and a bot on the channel. It provides many useful services for visitors to the IRC channel. You can interact with it in a private chat or publicly in any channel where it appears (#haskell and a number of others). It is available as a haskell package and can be integrated into ghci. Details on the software are found on a separate wiki page.
Here is its interface for the IRC user:
lambdabot's commands are prepended by a '@' sign.
|@help||display help to other commands, but help text is not available for all commands.|
| @where TOPIC (aliases: @what, @url)
@where+ TOPIC NEWTEXT
| show brief info about some TOPIC |
list some useful topics (paste, cabalstackhelp, ...)
set/update a topic (check for collisions first with @where TOPIC)
remove a topic (sets it to empty; lambdabot won't respond to queries about it)
recent snapshot of database, gzipped: http://silicon.int-e.eu/lambdabot/State/where
|@type EXPR or ':t' EXPR||shows the type of an expression|
|@kind TYPECONSTRUCTOR||shows the kind of a type constructor|
|@run EXPR or '>' EXPR||evaluates EXPR|
|@pl FUNCTION||shows a pointfree version of FUNCTION|
|@pointful FUNCTION or '@unpl' FUNCTION||shows a 'pointful' version of FUNCTION|
|@tell <nick> <msg> -- same as @ask||Next time <nick> speaks in channel they will be notified they have a message pending and how to receive it.|
If lambdabot doesn't cut it for you, there is a bot called yahb which runs your request in an actual GHCi prompt, so you can use IO.
Try e.g. % readFile "/proc/self/environ"
The hackage bot provides real-time notifications of new package uploads to Hackage.
To get an overview of where everybody on the channel might be, physically, please visit Haskell user locations.