summary refs log tree commit diff
path: root/pkgs/development/compilers/ats/default.nix
blob: a5ed478a879f36bec5380ffe81e576b1524fb2e2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
{ stdenv, fetchurl, gmp }:

let version = "0.2.11"; in stdenv.mkDerivation {
  name = "ats-anairiats-${version}";

  src = fetchurl {
    url = "mirror://sourceforge/ats-lang/ats-lang-anairiats-${version}.tgz";
    sha256 = "0rqykyx5whichx85jr4l4c9fdan0qsdd4kwd7a81k3l07zbd9fc6";
  };
  # this is necessary because atxt files usually include some .hats files
  patches = [ ./install-atsdoc-hats-files.patch ];

  buildInputs = [ gmp ];

  meta = {
    description = "A statically typed programming language that unifies implementation with formal specification";
    homepage = http://www.ats-lang.org/;
    license = stdenv.lib.licenses.gpl3Plus;
    longDescription =
      ''        
        ATS is a programming language with a highly expressive type system
	rooted in the framework Applied Type System. In particular, both
	dependent types and linear types are available in ATS. The current
	implementation of ATS (ATS/Anairiats) is written in ATS itself. It can
	be as efficient as C/C++ and supports a variety of programming
	paradigms.

	In addition, ATS contains a component ATS/LF that supports a form of
	(interactive) theorem proving, where proofs are constructed as total
	functions. With this component, ATS advocates a programming style that
	combines programming with theorem proving. Furthermore, this component
	may be used as a logical framework to encode various deduction systems
	and their (meta-)properties.

	This package contains the compiler atsopt, the frontend atscc,
	and the lexer atslex.
      '';
  };

  platforms = stdenv.lib.platforms.all;
}