Difference between revisions of "Cloud Haskell"
DuncanCoutts (talk | contribs) (→Videos and Blog Posts: add two videos) |
DuncanCoutts (talk | contribs) m (→Videos and Blog Posts: add link to part 4) |
||
Line 31: | Line 31: | ||
* '''video:''' ''(1hr)'' [http://skillsmatter.com/podcast/home/cloud-haskell/ac-5258 Cloud Haskell]: a general introduction and tutorial, focusing on what it does and how to use it. It also covers some details about the current implementation. |
* '''video:''' ''(1hr)'' [http://skillsmatter.com/podcast/home/cloud-haskell/ac-5258 Cloud Haskell]: a general introduction and tutorial, focusing on what it does and how to use it. It also covers some details about the current implementation. |
||
* '''video:''' ''(1hr)'' [http://skillsmatter.com/podcast/home/haskell-cloud/js-4179 Towards Haskell in the Cloud]: an older but more detailed introduction by Simon Peyton Jones about the problem area and the design decisions and internals of Cloud Haskell. In particular it covers the details of how sending functions over the wire really works. |
* '''video:''' ''(1hr)'' [http://skillsmatter.com/podcast/home/haskell-cloud/js-4179 Towards Haskell in the Cloud]: an older but more detailed introduction by Simon Peyton Jones about the problem area and the design decisions and internals of Cloud Haskell. In particular it covers the details of how sending functions over the wire really works. |
||
− | |||
⚫ | |||
− | |||
⚫ | |||
⚫ | |||
Well-Typed have a series of blog posts "Communication Patterns in Cloud Haskell" |
Well-Typed have a series of blog posts "Communication Patterns in Cloud Haskell" |
||
Line 42: | Line 37: | ||
* [http://www.well-typed.com/blog/72 Part 2: Performance] |
* [http://www.well-typed.com/blog/72 Part 2: Performance] |
||
* [http://www.well-typed.com/blog/73 Part 3: Map-Reduce] |
* [http://www.well-typed.com/blog/73 Part 3: Map-Reduce] |
||
− | * Part 4: K-Means |
+ | * [http://www.well-typed.com/blog/74 Part 4: K-Means] |
+ | |||
⚫ | |||
+ | |||
⚫ | |||
⚫ | |||
== Papers == |
== Papers == |
Revision as of 14:43, 15 October 2012
Cloud Haskell is a domain-specific language for developing programs for a distributed computing environment. Implemented as a shallow embedding in Haskell, it provides a message passing communication model, inspired by Erlang, without introducing incompatibility with Haskell’s established shared-memory concurrency.
Availability
Cloud Haskell is available from Hackage as distributed-process. You might also want to install distributed-process-simplelocalnet. The cutting edge development version is on github.
There is also the older prototype implementation remote (also available from github).
Documentation
For an overview of Cloud Haskell it's probably a good idea to read Towards Haskell in the Cloud (details below). The relevant documentation (in order of importance is)
and
If you want to know more details about Closure or Static (without the Template Haskell magic on top) you might want to read
Videos and Blog Posts
Cloud Haskell intros
- blog: A Cloud Haskell Appetiser (Parallel Haskell Digest 11)
- video: (1hr) Cloud Haskell: a general introduction and tutorial, focusing on what it does and how to use it. It also covers some details about the current implementation.
- video: (1hr) Towards Haskell in the Cloud: an older but more detailed introduction by Simon Peyton Jones about the problem area and the design decisions and internals of Cloud Haskell. In particular it covers the details of how sending functions over the wire really works.
Well-Typed have a series of blog posts "Communication Patterns in Cloud Haskell"
- Part 1: Master-Slave, Work-Stealing and Work-Pushing
- Part 2: Performance
- Part 3: Map-Reduce
- Part 4: K-Means
Alen Ribic has a series of blog posts about (Cloud) Haskell on the Raspberry Pi
Papers
- Towards Haskell in the Cloud, Jeff Epstein, Andrew Black, and and Simon Peyton Jones. Haskell Symposium, Tokyo, Sept 2011.
- Functional programming for the data centre, Jeff Epstein. Masters Thesis, University of Cambridge, 2011
Other Useful Packages
Serializable
A core concept in Cloud Haskell is that of serializable values. The Serializable type class combines Typeable and Binary. ghc can automatically derive Typeable instances for custom data types, but you need a package to derive Binary. There are various packages available that assist with this:
binary-generic and derive have been confirmed to work with Cloud Haskell; the status of the other packages is unknown -- YMMV (please feel free to update this wiki page if you have more information).