HOME

TheInfoList



OR:

The
Haskell Haskell () is a general-purpose, statically-typed, purely functional programming language with type inference and lazy evaluation. Designed for teaching, research and industrial applications, Haskell has pioneered a number of programming lan ...
Cabal (''common architecture for building applications and libraries'') aids in the packaging and distribution of software packages. It is contained in the
Haskell Platform The Haskell Platform is a collection of software packages, tools and libraries that create a common platform for using and developing applications in Haskell. With the Haskell Platform, Haskell follows the same principle as Python: "Batteries inc ...
.


History

Cabal has been introduced to simplify packaging of Haskell software and modules. It was added to the
Glasgow Haskell Compiler The Glasgow Haskell Compiler (GHC) is an open-source native code compiler for the functional programming language Haskell. It provides a cross-platform environment for the writing and testing of Haskell code and it supports numerous extensions, ...
version 6.4 as default package manager, along GHC's internal manager ghc-pkg. The actual binary cabal and the library Cabal are developed in different packages. Throughout its development it has gained additional features, such as sandboxes, which allow to escape the so-called Cabal hell (see below).


Use

Cabal packages provide a standard set of
metadata Metadata is "data that provides information about other data", but not the content of the data, such as the text of a message or the image itself. There are many distinct types of metadata, including: * Descriptive metadata – the descriptive ...
and build process; thus, it is possible to develop tools to upload Cabal packages to the
CPAN The Comprehensive Perl Archive Network (CPAN) is a repository of over 250,000 software modules and accompanying documentation for 39,000 distributions, written in the Perl programming language by over 12,000 contributors. ''CPAN'' can denote ei ...
-like community repository of software,
Hackage Haskell () is a General-purpose programming language, general-purpose, static typing, statically-typed, purely functional programming, purely functional programming language with type inference and lazy evaluation. Designed for teaching, resear ...
, or even allow for automated downloading, compilation, and installation of desired packages from Hackage.


Criticism

Cabal previously used a global package repository by default, version conflicts in dependencies could lead to Cabal hell, a state where certain packages couldn't get installed without re-installing already existing ones and therefore breaking the other packages. In 2014, a more stable (but less bleeding edge) variant of Hackage called Stackage was created. In 2015, it was extended with Haskell LTS and the tool
stack Stack may refer to: Places * Stack Island, an island game reserve in Bass Strait, south-eastern Australia, in Tasmania’s Hunter Island Group * Blue Stack Mountains, in Co. Donegal, Ireland People * Stack (surname) (including a list of people ...
, which doesn't share its problems. Cabal v3 was released in 2019. A new build style resolves the ''hell'' in a manner similar to the
Nix package manager Nix is a cross-platform package manager that utilizes a purely functional deployment model where software is installed into unique directories generated through cryptographic hashes. It is also the name of the tool's programming language. A pa ...
.


References


External links

*
"The Haskell Cabal: A Common Architecture for Building Applications and Tools"
-(the original proposal and specification, by Isaac Jones,
Simon Peyton Jones Simon Peyton Jones (born 18 January 1958) is a British computer scientist who researches the implementation and applications of functional programming languages, particularly lazy functional programming. Education Peyton Jones graduated f ...
,
Simon Marlow Simon Marlow is a British computer programmer, author, and co-developer of the Glasgow Haskell Compiler (GHC). He and Simon Peyton Jones won the SIGPLAN Programming Languages Software Award in 2011 for their work on GHC. Marlow's book Parallel ...
, Malcolm Wallace, and Ross Patterson; a version was submitted to the Haskell Workshop, 2005)
Cabal talk
{Dead link, date=November 2018 , bot=InternetArchiveBot , fix-attempted=yes -(slides) Free software programmed in Haskell Free package management systems