Libraries

LicensedPreludeExts - Prelude Extensions from the community.

Submitted by shapr on Thu, 02/24/2005 - 7:28am.

The LicensedPreludeExts on the Haskell Wiki started with Koen Claessan's permutations function being requested too many times on the #haskell irc channel. I wondered what other bits of code people were missing from the Prelude and asked for contributions.

hs-plugins 0.9.8 released

Submitted by shapr on Wed, 02/23/2005 - 3:21am.

Don Stewart's hs-plugins is a cool tool for dynamically loading haskell modules at runtime. hs-plugins history begins with GHCi, which was the first interpreter-like software for GHC. Some time later, Andre Pang wrote the RuntimeLoader, which turned GHCi into a library allowing any Haskell application to do dynamic loading. RuntimeLoader was very close to GHCi, the user needed to handle library dependencies themselves, for example. hs-plugins is a complete solution to dynamic loading in Haskell, it has lots of features and can do all sorts of nifty things.

hs-plugins includes spiffy features like eval, make, and load. The eval function does compiling, loading, and executing a single string's worth of code. the make function checks a source module and its dependencies for any changes since the last compilation, and recompiles and reloads all changed modules.

hs-plugins is already used in several applications. One especially nice example is the Yi editor from the same author, where hs-plugins is used to allow the entire application to be dynamically reloaded from a single Boot.hs startup file.

"Algorithms: A Functional Programming Approach" by Fethi Rabhi and Guy Lapalme

Submitted by shapr on Tue, 02/22/2005 - 11:13am.

Algorithms: A Functional Programming Approach is one of my top ten favorite computer science books. First, it covers the basics of Haskell and complexity theory. Then for each algorithm it gives first an easy to read implementation, and then a more efficient but harder to read implementation. Each of the transformations from clear to fast versions are discussed, and optimizations are explained. This book was also my first introduction to methodical step-by-step algorithmic optimization systems, in this case the Burstall & Darlington system. I've since used the lessons I learned in this book in my commercial work in Python, SQL, Java, and of course Haskell.

The best audience for this book is those who are looking for a second Haskell book, or new to algorithms, or would like to learn how to optimize pure (non-monadic) Haskell code systematically. The sections on top-down design techniques and dynamic programming would be of interest to programmers who are still learning and wish to know more about structuring larger programs.

Even with all that content, this softcover book is only 256 pages (coincidentally binary?), allowing for easy reading in any spare moment.