Long time no programming language links: Haskell for Mac is an interactive programming environment for Haskell on the Mac (as the name suggests). Interesting, as it offers a kind of notebook interface with which you can interactively develop code, try it out directly and visualize the results. Quite interesting for playing around with Haskell, but I don't know if it's worth 25 dollars - especially the sandboxing enforced by Apple can quickly become annoying. And since it requires Yosemite, I won't be able to try it out anyway.
haskell
Write Yourself a Haskell... in Lisp 17 February 2013. I always find this kind of thing exciting, even if I have to admit that I probably won't do anything with it. Still, it's interesting to read.
hoc - Project Hosting on Google Code. Just blogged about it in case I want to play with Haskell again. HOC is a bridge between Haskell and Objective-C and thus allows access to the OSX frameworks.
Monads Are Not Metaphors - Code Commit. Definitely one of the better explanations of what a monad is that I have read.
Web Authoring System Haskell (WASH) - just for completeness, also linked, it is comparable to Ur/Web and Ocsigen, only with Haskell. But it somehow seems even more piecemeal than cohesive.
Real World Haskell - I hadn't linked that yet? But this is the complete content of "Real World Haskell" on the web, the O'Reilly book on Haskell. I should read through it in a few quiet hours (days?).
Understanding Haskell Monads - of all the tutorials I have seen on this topic so far, the most understandable for me.
Software Tools in Haskell - simple and simple command-line programs in Haskell. Finally a tutorial that uses simple and simple, but complete programs and not just code snippets as a basis.
Downloading Hugs - I just have to play with Haskell again (and fail again with this quirky language ...). And there is a quite nice Windows version of the "small" interpreter Hugs - might be something for my Eee-PC.
Yhc/Erlang/Proof of concept - interesting project that translates Haskell to Erlang bytecode (BEAM) and thus enables mixing of Haskell and Erlang code.
Frag - a 3D first-person-shooter in Haskell.
Frag - 3D First-Person-Shooter in Haskell. Go figure.
Haskell vs. Erlang in a sample project - detailed post about Haskell and Erlang in a project with quite specific requirements (binary protocol, a lot of threads). Interesting insights into the strengths of Erlang.
QuickCheck: An Automatic Testing Tool for Haskell - an interesting approach to automatic testing. The properties of functions are stored directly in the code and the test does not simply test predefined test cases, but runs through the property definitions with randomly generated values.
HOC: A Haskell to Objective-C Binding - even for Haskell there is an Objective-C Bridge that I didn't know about.
HsShellScript is a Haskell library that allows you to solve typical shell script problems with Haskell. So functions for controlling processes and accessing system information etc. Looks very nice, but unfortunately cannot be compiled on OS X due to missing mntent.h.
mod_haskell has unfortunately not been developed further for years - it offers an integration of Hugs and ghc into the Apache server.
Regular Expressions in Haskell is an implementation of regular expressions entirely in Haskell.
Web Authoring System Haskell (WASH) is a collection of Haskell libraries (more precisely DSLs - domain specific languages - in Haskell) for programming web applications. It includes CGI-style programming, HTML generation, mail handling, and database drivers for PostgreSQL.
For those who don't feel comfortable with English as a language for introductory literature, there is an online German-language Haskell course to work through. It looks quite decent - although I find that a bit little is explained.
larger Haskell sources
Who like me prefers to dig through sources to learn languages, here are a few larger Haskell projects to choose from:
- [Haskell User-Submitted Libraries][0] is a collection of partially older but still interesting Haskell projects. Downloadable is an IRC bot and in the CVS there is also a web server with a plugin interface.
- [Pugs][1] is a Perl 6 implementation in Haskell. [I've already mentioned it][2], it's still cool |:-)|
- [darcs][3] is a distributed source control system. [I've also mentioned it][4], but it's still cool.
Helium - Haskell Learning System
Helium is a Haskell subset compiler specifically developed for teaching. It provides more detailed error messages and further analyzes sources to make these messages possible. However, it is really only a subset of Haskell - and since type classes are missing, a quite important part is missing. But to get a taste of functional programming, it is quite useful.
As textbooks, The Craft of Functional Programming and The Haskell School of Expression are recommended. I ordered both - my Haskell knowledge is more than primitive and hopelessly outdated (if that is even possible with a relatively young language like Haskell).
One of the more complex topics in Haskell are the Monads - a way to simulate things like side effects and sequentiality in a purely functional language with lazy evaluation - simply because you sometimes want the output before the input, for example when querying data from the user, or when you want to save a state that is called again later. The tutorial helps to understand the concept of Monads.
TheMonadReader is intended to become a regular publication about Haskell. The first issue is linked. The whole thing is supposed to be less formal than classic scientific journals, so it could definitely become interesting. There is also an article about Pugs (Perl6 in Haskell) in the first issue.
Pugs - pugscode is a Perl6 implementation in Haskell. Even crazier: the entire project is primarily coordinated in an IRC chat and the collaborative work is done with SubEthaEdit. Is this already Nirvana?
darcs - Distributed Versioning
darcs is one of many version control systems vying to succeed CVS. Specifically, darcs belongs to the class of distributed version control systems and is thus naturally superior to Subversion with its centralist approach (at least if you want to manage a distributed project and can't just get by with the central repository). Normally I wouldn't say much about something like this — after all, there are currently more version control projects than there were editors in the 80s. But seriously now: who can ignore a version control system that is written in a functional programming language with lazy evaluation (yes, exactly, this thing is in Haskell — so much for the claim that Haskell is unsuitable for practical projects) and describes itself as being based on a "theory of patches" with roots in quantum mechanics? And the programmers even use literate programming — yes, that somewhat forgotten method by Knuth of combining documentation and code in a single source file and developing a program from a documentation-centric perspective. Simply cool.
The Implementation of Functional Programming Languages
Great. A classic of computer science literature (ok, a modern classic) is now readable online. The book is interesting because it explains many aspects of implementing a system environment suitable for Haskell or Miranda.
Unfortunately, it's only available online as scans in JPG format, so it's somewhat cumbersome to use - searching obviously doesn't work. But at least the table of contents is linked via an image map.
hOp - Haskell Micro-Kernel
Device drivers in Haskell? Cool
I found the original article at Lambda the Ultimate.
Hugs 98 - Haskell Interpreter Implementation for many systems (even Zaurus)