background preloader

Haskell Applications

Facebook Twitter

Turtle.Prelude. Description This module provides a large suite of utilities that resemble Unix utilities.

Turtle.Prelude

Many of these commands are just existing Haskell commands renamed to match their Unix counterparts: >>> :set -XOverloadedStrings >>> cd "/tmp" >>> pwd FilePath "/tmp" Some commands are Shells that emit streams of values. view prints all values in a Shell stream: >>> view (ls "/usr") FilePath "/usr/lib" FilePath "/usr/src" FilePath "/usr/sbin" FilePath "/usr/include" FilePath "/usr/share" FilePath "/usr/games" FilePath "/usr/local" FilePath "/usr/bin" >>> view (find (suffix "Browser.py") "/usr/lib") FilePath "/usr/lib/python3.4/idlelib/ClassBrowser.py" FilePath "/usr/lib/python3.4/idlelib/RemoteObjectBrowser.py" FilePath "/usr/lib/python3.4/idlelib/PathBrowser.py" FilePath "/usr/lib/python3.4/idlelib/ObjectBrowser.py" Use fold to reduce the output of a Shell stream: Create files using output:

Whatgoodisaroad/surveyor. 3 lines Parser in Haskell (Line 9,11,12) Nomyx by cdupont.

Diagrams

How Haskell can solve the integration problem. This tutorial: Will show how the development of web applications, workflows, asynchronous tasks, Enterprise Application Integration(EAI), Service Integration and Business Process Management (BPM) face the same underlying problem, that may be called the integration problem.

How Haskell can solve the integration problem

Creating a single application in the imperative style is easy and intuitive, because the programmer is in control of the sequence of things to do. But when it comes the time to integrate two or more autonomous entities that send events at any time in its own sequence then is when the programmer is not in control, so a different programming model is necessary. Such problem happens when trying to integrate the users with backoffice applications via web applications, but also when it is necessary to integrate two or more backoffice applications, company departments, web sites, web services etc. The problems of the standard solution But state machines are difficult to program and debug.

GUIs hide the problem Workflow TCache ! BlogLiterately 0.6. I’m very proud to announce the release of BlogLiterately version 0.6, a tool for formatting and uploading blog posts, including syntax highlighting, generation of ghci sessions, LaTeX support, automatic image uploading, and more. tl;dr: Instead of cumbersomely specifying all options on the command-line, you can now specify options using a combination of “profiles” (e.g. for common sets of options such as blog URL and password) and options embedded within the .markdown or .lhs documents themselves (e.g. for post-specific options like title, tags, and categories).

BlogLiterately 0.6

There are a few other changes and improvements as well. For more information, see the documentation or keep reading below! Specifying options With previous releases, uploading a post usually went something like this: BlogLiterately MyPost.md --blog " \ --user me --password 1234567 --postid 9999 --title "My awesome post" \ --tag tag1 --tag tag2 --tag tag3 --category Stuff \ --category OtherStuff --ghci --wplatex Generating HTML only.

Haskell IDE

NLP. Running a Startup on Haskell. PostgreSQL, hpaste, and EDSLs. By Chris Done I’m nearing the end of a four day hacking weekend, starting at the 2nd of June, thanks to the Festa della Repubblica in Italy.

PostgreSQL, hpaste, and EDSLs

Since then I’ve hacked on some things. I started dabbling with writing pure Haskell bindings to PostgreSQL a few weeks ago and this weekend I decided I’ve give it a real API. While thinking of how I wanted the API to be, I saw that Bryan O’Sullivan announced mysql-simple, a fast and easy to use library for working with MySQL. I liked the API as it resembled my prototype, and so he proposed we use a consistent API.

So I gutted mysql-simple and replaced the MySQL bits with my PostgreSQL library. And by Jove, it works! What I particularly like about Bryan’s API is that serialization to and from the database is not bidirectional; there are two classes, Param and Result, because sometimes you have data that should be written to the database, but never read, or vise-versa. I thought I’d test out my new library with a simple web application, hpaste.org.

Pandoc