A practical lambda-calculator is a normal-order evaluator for the untyped lambda-calculus, extended with convenient commands and shortcuts to make programming in it more productive. Shortcuts are distinguished constants that represent terms. Commands define new shortcuts, activate tracing of all reductions, compare terms modulo alpha-conversion, print all defined shortcuts and evaluation flags, etc. Terms to evaluate and commands are entered at a read-eval-print-loop (REPL) "prompt" or "included" from a file by a special command. A Haskell branch is an embedding of the lambda calculator (as a domain-specific language) into Haskell. The calculator can be used interactively within Hugs or GHCi.
RSA-Haskell is a collection of command-line cryptography tools and a cryptography library written in Haskell. It is intended to be useful to anyone who wants to secure files or communications or who wants to incorporate cryptography in their Haskell application. The libraries include Haskell implementations of SHA1, EME-OAEP, EMSA-PSS, MGF, RSAES-OAEP, and RSA-PSS. These standards implement signature/verification, strong cryptography, and hashing.
DrIFT is a type sensitive preprocessor for Haskell. It extracts type declarations and directives from modules and applies rules to them which generate code. It is intended that the user can add new rules as required. DrIFT automates instance derivation for classes that aren't supported by the standard compilers. In addition, instances can be produced in separate modules to that containing the type declaration. This allows instances to be derived for a type after the original module has been compiled. Simple utility functions can also be produced from a type.
hmake is a compilation manager for Haskell programs. It is compiler independent, and liberates the programmer from needing to write Makefiles by extracting dependencies directly from the source code. It is aware of all compiler invocation conventions, and of several common pre-processors, including cpp, greencard, hsc2hs, c2hs, and happy.
HaXml is a suite of libraries and tools for manipulating XML documents in Haskell. It includes a parser, a pretty-printer, a validator, a combinator library for transforming documents, and converters for changing a Haskell datatype into an XML DTD, and for changing an XML DTD into a set of Haskell datatypes. There are also tools for a query language based on XQL.
Hat (Haskell Tracer) is a tracing and debugging system for Haskell that can be used for comprehending working programs, and debugging an incorrect one. It consists of hat-trans, which transforms a program into one that traces itself using your normal compiler and a runtime library, and a set of browsing tools that explore the trace after execution of the program has completed.
Xcerpt is a declarative, rule-based query and transformation language for XML, inspired by logic programming. Instead of the path-based navigational approach taken by languages like XSLT and XQuery, Xcerpt uses pattern-based, positional queries, where a pattern is an "example" of the database containing variables for binding content. As in logic programming, rules may be chained to form more complex queries.
CMI is an optimizing frontend for gcc which allows gcc to inline across module boundaries without requiring you to put inline functions in header files or even mark inline functions for inlining. It makes your code go faster, makes your code smaller, makes your embedded software use less stack space, is a preprocessor for gcc, supports most gcc extensions, and is able to deal with such notoriously tricky code as the glibc header files. It works by merging multiple C files into one file, topologically sorting the definitions so that definitions come before uses, and marks functions as inline. It controls code bloat by deleting dead code and inlining up until a user-specified budget is reached. You can use user-specified heuristics to select which functions to inline (it includes a tool which uses gprof output to choose inlinings to illustrate this).