Difference between revisions of "Applications and libraries/Web programming"

From HaskellWiki
Jump to: navigation, search
(Added hvac; some lay-out improvements)
(Redirect to web, which usurps this page)
(18 intermediate revisions by 12 users not shown)
Line 1: Line 1:
#redirect [[Web]]
Web, HTTP, HTML and XML programming.
== Applications ==
See also the [[Libraries_and_tools/Network|network category]].
=== Haskell web applications ===
;[http://hpaste.org/ hpaste: the haskell pastebin]
:A pastebin site for Haskell runnning on top of [[HAppS]]. [http://www.scannedinavian.com/~eric/hpaste Source].
;[http://pass.net/ pass.net]
:Replaces registration, confirmation mails, and multiple passwords with a single login. at your email domain. Runs on HAppS.
;[http://www.parallelnetz.de/ Parallel web]
:Suggests that you travel through a parallel web with translated content. It's based on Simon Marlow's Haskell Web Server.
:For Haskellers: Test the Monad Transformer in [http://www.haskell.org.MonadTransformer.parallelnetz.de/haskellwiki/Category:Monad a parallel Haskell wiki].
:For Germans: Search in [http://www.google.de.saxophone.parallelnetz.de/ Saxon dialect] or check out the [http://www.stoiber.de.Ehmulator.parallelnetz.de/ Ehmulator].
:Hosted on [http://sourceforge.net/projects/parallelweb SourceForge].
=== Web servers ===
;[http://darcs.haskell.org/hws/ Haskell Web Server (hws)]
:Simon Marlow's concurrent Haskell web server
;[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/mohws Modular Haskell Web Server (mohws)]
:A web server with a module system and support for CGI. Based on Simon Marlow's original Haskell Web Server.
;[http://www.informatik.uni-freiburg.de/~thiemann/WASH/#wsp Wash Server Pages]
:An extended version of Simon Marlow's webserver (hws) that runs WASH modules as servlets.
=== Site verification ===
;[http://www.dsic.upv.es/users/elp/GVerdi GVerdi]
:A Rule-based System for Web site Verification
=== Wikis ===
;[http://www.flippac.org/projects/flippi/ Flippi]
:A wiki written in Haskell
;[http://pandocwiki.googlecode.com/ PandocWiki]
:A simple wiki using HAppS and Pandoc
;[http://latexki.nomeata.de/ latexki]
:Subversion based Wiki for collaborative editing of LaTeX documents,
;[http://hikij.wellquite.org/ Hikij]
:A wiki written in Haskell and Javascript
=== Content-management systems ===
;[http://hope.bringert.net/ Hope]
: An extensible Haskell content management system
;[http://www.acooke.org/jara/halipeto/index.html Halipeto]
:Halipeto by Andrew Cooke is a simple system for generating web pages from templates and a database. It currently only includes support for a simple database based on text files. ''Full documentation but unmaintained.''
=== XML ===
;[http://www.cs.york.ac.uk/fp/Xtract/ Xtract]
:Xtract is a `grep'-like command-line tool for searching XML and HTML documents. Note that Xtract is now part of HaXml, listed below in Libraries.
;[http://www.cse.unsw.edu.au/~chak/haskell/lambdaFeed/ lambdaFeed]
:Manuel Chakravarty's RSS 2.0 feed generator. It reads news items - in a non-XML, human-friendly format - distributed over multiple channels and renders them into the RSS 2.0 XML format understood by most news aggregators as well as into HTML for inclusion into web pages.
;[http://johnmacfarlane.net/pandoc/ Pandoc]
:Pandoc is a Haskell library for converting from one markup format to another, and a command-line tool that uses this library. It can read markdown and (subsets of) reStructuredText, HTML, and LaTeX, and it can write markdown, reStructuredText, HTML, DocBook XML, LaTeX, ConTeXt, RTF, groff man, and S5 HTML slide shows.  It also supports extensions to markdown syntax for footnotes, inline LaTeX, definition lists, strikeout, tables, and more.
=== CSS ===
;[http://zamez.org/factorcss Factor CSS]
:This tool takes a CSS stylesheet on input and produces an almost equivalent stylesheet on output, but with rulesets split, combined, and reordered to "factor out" common declarations. This helps reveal shared components. The resulting stylesheet may also be smaller.
== Libraries ==
=== HTTP ===
;[http://www.haskell.org/http/ HTTP and Browser Modules]
:A significantly RFC compliant HTTP/1.1 client implementation. This is an updated version of [http://homepages.paradise.net.nz/warrickg/haskell/http/ Warrick Gray's original version].
;[http://darcs.haskell.org/SoC/hsp.clientside/ HSP Clientside]
:HSPClientside is a library for generating client-side scripts (in JavaScript) from [http://www.cs.chalmers.se/~d00nibro/hsp/ Haskell Server Pages] (HSP).
=== Web frameworks ===
;[http://www.turbinado.org/Home Turbinado]
:Turbinado is a fast, easy-to-use web application framework for Haskell.
;[http://happs.org/ HAppS - Haskell Application Server]
:The Haskell Application Server contains a monadic framework for ACID transactions, an HTTP server (outperforms Apache/PHP in informal benchmarks), an SMTP server and mail delivery agent. A DNS resolver in pure Haskell. And XML and XSLT support. See also [[HAppS]], [[HAppS tutorial]].
;[http://pass.net/s/repo Pass.Net]
:Provides web sites with a simple shared web API to manage user logins, confirmation emails, forgotten passwords, etc. Most application frameworks dont have complete libraries to cover all of this functionality. Outsourcing this to Pass.net means less complexity in your application and less worrying about mail delivery, mail server integration, etc.  Pass.Net is currently beta. We expect it to be fully live and reliable by the end of the year. Pass.Net is written in Haskell using HAppS and provides an easy to use Haskell library for HAppS user. Clients in python, php, and java coming soon.
;[http://www.informatik.uni-freiburg.de/~thiemann/haskell/WASH/ WASH]
:A family of combinator libraries for programming Web applications. WASH/HTML is for generating dynamic HTML documents, combining flexibility and safety. WASH/CGI is for server-side Web scripting with sessions, compositional forms, and graphics.
;[http://www2-data.informatik.unibw-muenchen.de/EdComb/index.html EdComb]
:Another combinator library -- for [[Libraries and tools/Editors|editors]]! But a very fruitfully general approach to the concept of ''editor'' is presented. Therefore, these editor combinators can be used also e.g. as browser combinators, with interesting new possibilities for browsers.
;[[HSP|Haskell Server Pages]]
:Using Haskell as a server-side scripting language, extended to allow embedded XML/XHTML fragments in Haskell code.
;[http://darcs.haskell.org/~lemmih/hasp/ HASP]
:HASP is a fork of Niklas Broberg?s Haskell Server Pages. Changes includes:
* support for all GHC extensions
* front-end based on FastCGI instead of its own web server
* minor bug fixes and performance tuning.
;[http://home.tiscali.be/stevevh/ Generative Implementation Strategies for Data-Centric Web Applications]
:Generic presentation layer abstractions of administrative web applications are the central theme of this thesis. The domain-engineering approach results in a framework to support user interfaces generated from high-level descriptions. A domain-specific language describes user interfaces. The [hoyweghenSoft.zip Haskell-based generator] transforms these descriptions to user interfaces implemented with JavaScript and XHTML.
;[http://www.cs.uu.nl/wiki/WebFunctions/WebHome WebFunctions]
:WebFunctions is a [[EDSL]] for developing websites, implemented in Haskell. WebFunctions is a domain specific embedded language for web authoring.
;[http://www.cin.ufpe.br/~haskell/hwsproxygen/ HWSProxyGen]
:A web services proxy generator for the Haskell functional language, implemented in Haskell and C#. The final purpose is to show that Haskell and functional languages in general can be used as a viable way to the implementation of distributed components and applications, interacting with services implemented in different languages and/or platforms.
: A proposed tool to develop Ajax applications (stand-alone Web applications that execute into the browser environment) in Haskell.
;[[Haskell_in_web_browser|Haskell Web Toolkit]]
:A client-side (for programs running inside inside web browser) API layer on top of DOM, part of [[Yhc/Javascript|Yhc Javascript backend]]
;[http://community.haskell.org/~sclv/hvac/ hvac]
:A transactional, declarative framework for lightweight web applications. Documentation is available at [http://community.haskell.org/~sclv/hvac/html_docs/hvac/]. See also the [http://fmapfixreturn.wordpress.com/2008/03/23/ann-hvac-01b-a-transactional-declarative-framework-for-lightweight-web-applications/ announcement]
=== URI ===
;[http://haskell.org/ghc/docs/latest/html/libraries/network/Network-URI.html Network.URI]
:Included in the GHC distribution, this is very complete URI parser implementing the syntax specified by RFC3986. Based on Graham Klyne's [http://lists.w3.org/Archives/Public/uri/2003Mar/0010.html URI handling] implementation from the W3C uri mailing list, and since updated for compatibility with both GHC and Hugs. Highly recommended for parsing URLs and any other kind of URI.
=== XML ===
;[http://www.cs.york.ac.uk/fp/HaXml/ HaXml: utilities for using XML with Haskell]
:Includes an XML parser, an HTML parser, a pretty-printer, a combinator library for generic XML transformations, and two Haskell>-<XML converters using type-based translation.
;[http://www.fh-wedel.de/~si/HXmlToolbox/ HXT: Haskell XML Toolbox]
:The Haskell XML Toolbox (HXT) bases on the ideas of HaXml and HXML, but introduces a more general approach based on arrows for processing XML with Haskell. The Haskell XML Toolbox uses a generic data model for representing XML documents, including the DTD subset and the document subset, in Haskell. It contains an XML parser, an HTML parser, namespaces are supported, XPath expressions can be used for selecting and transforming parts of a document. Validation can be performed with respect to DTDs and RelaxNG schema. A [[HXT|Getting started page]] describes the programming model behind HXT and gives some simple examples.
;[http://darcs.haskell.org/wraxml WraXML]
:A little wrapper to HaXML and HXT: It provides a more natural data structure for representing XML trees, and converts between HaXML or HXT and its custom tree structure. The operations on the tree need not to be of type (a -> [a]), thus using these functions is a bit more type safe. It has a custom lazy HTML parser using TagSoup and a custom lazy formatter. The library is currently much oriented to HTML rather than XML.
;[http://wiki.di.uminho.pt/wiki/bin/view/PURe/2LT 2LT: Two-Level Transformation]
:A two-level data transformation consists of a type-level transformation of a data format coupled with value-level transformations of data instances corresponding to that format. Examples of two-level data transformations include XML schema evolution coupled with document migration, and data mappings used for interoperability and persistence. A library of two-level transformation combinators. These combinators are used to compose transformation systems which, when applied to an input type, produce an output type, together with the conversion functions that mediate between input and out types. Front-ends for XML and SQL. These front-ends support (i) reading a schema, (ii) applying a two-level transformation system to produce a new schema, (iii) convert a document/database corresponding to the input schema to a document/database corresponding to the output schema, and vice versa. Referential constraints and primary key information are propagated through the schema transformation.
;[http://www.mail-archive.com/haskell@haskell.org/msg18396.html HSXML]
:A direct Haskell embedding of SXML
;[http://m13s07.vlinux.de/darcs/StaticDTD/v2/ StaticDTD]
:StaticDTD: complete static validness against a DTD.
=== HTML ===
;[http://www.cse.ogi.edu/~andy/html/intro.htm The Haskell Html Library] by Andy Gill
:This library is a collection of combinators, allowing your Haskell programs to generate HTML. It is available in the standard libraries as [http://haskell.org/ghc/docs/latest/html/libraries/base/Text-Html.html Text.Html].
;[http://www.haskell.org/ghc/docs/latest/html/libraries/xhtml/Text-XHtml.html XHtml library]
:This is a version of [http://haskell.org/ghc/docs/latest/html/libraries/base/Text-Html.html Text.Html], modified to produce XHTML 1.0 Transitional.
;[http://www.dtek.chalmers.se/~tumm/vieux/ Vieux: A Nevow implementation]
:Vieux is a html-template system for Haskell. The basic idea is to define a xhtml template which is used to generate a xhtml document by Vieux.
;[http://www.wellquite.org/chunks/ Text.HTML.Chunks]
:Text.HTML.Chunks is a templating system inspired by the Perl HTML::Chunks module. The major change for the Haskell version is that the use of the templates is statically verified.
;[http://www-users.cs.york.ac.uk/~ndm/tagsoup/ TagSoup]
: TagSoup is a library for extracting information out of unstructured HTML code, sometimes known as tag-soup. The HTML does not have to be well formed, or render properly within any particular framework. This library is for situations where the author of the HTML is not cooperating with the person trying to extract the information, but is also not trying to hide the information. The library provides a basic data type for a list of unstructured tags, a parser to convert HTML into this tag type, and useful functions and combinators for finding and extracting information.
=== CGI ===
; [http://www.haskell.org/ghc/docs/latest/html/libraries/cgi/Network-CGI.html Network.CGI]
:Simple Library for writing CGI programs. This version of the library is for systems with version 2.0 or greater of the network package. This includes GHC 6.6 and later. Features include:
:* Access to CGI parameters (e.g. form input) from both GET and POST requests.
:* Access to CGI environment variables.
:* Ability to set arbitrary response headers.
:* Support for HTTP cookies.
:* Efficient file upload support.
:* Wrapper [http://www.haskell.org/ghc/docs/6.6/html/libraries/cgi/Network-CGI-Compat.html functions] for compatibility with the former [http://haskell.org/ghc/docs/latest/html/libraries/network/Network-CGI.html Network.CGI] module.
;[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/fastcgi FastCGI library]
:A library for using NewCGI programs with [http://www.fastcgi.com/ FastCGI].
=== XML-RPC and CORBA ===
;[http://www.haskell.org/haxr/ HaXR - the Haskell XML-RPC library]
:An XML-RPC client and server library. [http://www.xmlrpc.com/ XML-RPC] is "remote procedure calling using HTTP as the transport and XML as the encoding. XML-RPC is designed to be as simple as possible, while allowing complex data structures to be transmitted, processed and returned."
;[http://www.dcs.shef.ac.uk/~simonf/HAIFA.html HAIFA]
:HAIFA is an implementation of parts of the web-service architecture in Haskell. Notably it includes an XML serializer, a partial implementation of XML Schema and SOAP/1.1.
;[http://sourceforge.net/projects/haskell-corba/ haskell-corba]
:This package allows Haskell programmers to write CORBA clients and servers using the [http://www.mico.org MICO open-source CORBA implementation]. It defines a Haskell language mapping for CORBA, and includes an IDL compiler which generates Haskell stub and skeleton modules from IDL files.
=== Finance ===
;[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/Finance-Quote-Yahoo Finance-Quote-Yahoo]
:Obtain quote data from finance.yahoo.com
== See also ==
* [[Practical web programming in Haskell]]
* Mailing list on [http://www.haskell.org/mailman/listinfo/web-devel web development]
== Hackage ==
* [http://hackage.haskell.org/packages/archive/pkg-list.html#cat:Web Web libraries on Hackage]
* [http://hackage.haskell.org/packages/archive/pkg-list.html#cat:Network Network libraries on Hackage]

Latest revision as of 13:18, 3 October 2010

Redirect to: