A gtk2hs server and clan browser for the open source game Tremulous http://tremulous.net. Both Tremulous 1.1 and GPP are supported.
Features filtering, player search, a list of online clan members, a clan list and basic perferences.
A simple applicative parser in Parsec style
This library provides an interface to send notifications with the Apple Push Notification Service.
Note: Your connection to Apple's Push Notification service must be secured with SSL. Currently, Haskell's support for SSL is incomplete, therefore you should use an SSL tunnel to connect your application to the push service, such as stunnel.
This package enables you to compile and execute AppleScript code from Haskell, and provides support for this AppleScript code to call back into Haskell. To get started, see Foreign.AppleScript.Rich.
Some instances for applicative functors and type-level composition. Forkable on github.
Any applicative functor can be given numeric instances in a boilerplate way. The applicative-numbers package provides an include file that makes it a snap to define these instances. See Data.Numeric.Function for an example.
Project wiki page: http://haskell.org/haskellwiki/applicative-numbers
Copyright 2009 Conal Elliott; BSD3 license.
Instances of Num classes for applicative functors. To be #include'd after defining APPLICATIVE as the applicative functor name and CONSTRAINTS as a list of constraints, which must carry its own trailing comma if non-empty. The APPLICATIVE symbol gets #undef'd at the end of the include file, so that multiple includes are convenient.
@ #define INSTANCE_Ord #define INSTANCE_Enum
#define APPLICATIVE Vec2 #include "ApplicativeNumeric-inc.hs"
#define APPLICATIVE Vec3 #include "ApplicativeNumeric-inc.hs"
#define APPLICATIVE Vec4 #include "ApplicativeNumeric-inc.hs" @
You'll also have to import pure and liftA2 from Control.Applicative and specify the FlexibleContexts language extension (due to an implementation hack).
Some instances are generated only if a corresponding CPP symbol is defined: INSTANCE_Eq, INSTANCE_Ord, INSTANCE_Show, INSTANCE_Enum
Quasiquoters taken from Matt Morrow's haskell-src-meta to implement Conor McBride's idiom brackets, and a do-notation that only requires Applicative (and is correspondingly less powerful).
Utility to perform approximate randomization tests.
The purpose of this module is to provide newtype wrappers that allow one to effectively override the equality operator of a value so that it is approximate rather than exact. The wrappers use type annotations to specify the tolerance; the Digits type constructor has been provided for specifying the tolerance using type-level natural numbers. Instances for all of the classes in the numerical hierarchy have been provided for the wrappers, so the wrapped values can mostly be used in the same way as the original values. (In fact, most of the time one doesn't even have to wrap the starting values, since expressions such as (1+sqrt 2/3) are automatically wrapped thanks to the fromIntegral method of the Num typeclass.) See the documentation for Data.Eq.Approximate for more detailed information on how to use this package. New in version 1.1: Added explicit Show constraints to the Show instances, as the Num class in the newest version of GHC (wisely) no longer includes Show as a constraint.
This is a Haskell (plus some extensions) implementation of a library for incremental computing. It closely follows the implementation in the nice POPL 2002 paper "Adaptive Functional Programming", by Umut Acar, Guy Blelloch and Bob Harper.
Self optimizing polymorphic container types.
Adaptive containers are polymorphic container types that use class associated data types to specialize particular element types to a more efficient container representation. The resulting structures tend to be both more time and space efficient.
A self-optimizing pair, for example, will unpack the constructors, yielding a representation for (Int,Char) requiring 8 bytes, instead of 24.
This difference can be visualized. Consider the expression:
> [ (x,y) | x <- [1..3], y <- [x..3] ]
* [(Int,Int)]: A regular list of pairs http://code.haskell.org/~dons/images/vacuum/tuple-list.png
* [Pair Int Int]: An adaptive list of pairs http://code.haskell.org/~dons/images/vacuum/pair-list.png
* List (Pair Int Int): An adaptive list of adaptive pairs http://code.haskell.org/~dons/images/vacuum/list-pair.png
Currently supported adaptive containers: pairs, lists, maybes
Most unboxed element types are supported.
Self optimizing tuple types.
Adaptive tuples are tuple types in which the number of elements is determined at run-time. These structures are designed to combine the space-efficiency of tuples with the size flexibility of lists.
Adaptive tuples provide lazy and strict, unpacked data structures for all tuple sizes from 0 to 20 elements. Adaptive tuples of more than 20 elements are allowed, however they are stored in an ordinary list.
This package provides useful utilities for making use of the opportunities the ArrowApply class provides, such as the ability to work with Arrows as Monads, and use liftM-like functions.
LDAP authentication for Haskell web applications.
A data structure representing a bidirectional mapping between two key types. Each value in the bimap is associated with exactly one value of the opposite type.
A library for handling and manipulating bitmaps (that is, rectangular pixel arrays).
OpenGL support for Data.Bitmap. It has its own package so that the bitmap package does not depend on OpenGL.
Library defining several bitmap types, including ones stored as unboxed arrays, any string type, and functions
This library also supports conversion to and from bitmaps as defined in the "bitmap" package.
This library has not yet been tested extensively.
Note: This library is currently largely designed with RGB pixels with a color depth of 24 bits in mind. Better support for other pixel and color formats is intended to be implemented in the future.
This module defines a Bson class to convert data types to Bson and to convert Bson documents back to datatypes, along with template haskell functions to easily derive the instance.
Buildwrapper is an alternative to scion. It provides services to configure, build and give information on source files to help IDEs manage Haskell projects. You can use buildwrapper to build project and retrieve errors, get outline for each module source, get the type of something inside a source file, get lexer tokens, etc. Buildwrapper is used in the EclipseFP project (Eclipse plugins for Haskell development)
This library provides a wrapper to mmap(2), allowing files or devices to be lazily loaded into memory as strict or lazy ByteStrings, using the virtual memory subsystem to do on-demand loading.
A converter from Cabal build description files, to Description-of-a-Project (DOAP) RDF files, giving visibility on the semantic web to cabalized Haskell projects.
This template includes working callbacks to handle the File and Help menus and File Save/Open dialogs, with dummy handlers for selecting filenames and the Edit menu's Cut, Copy, and Paste. The main canvas uses Cairo for graphics rendering, and includes example code from the cairo package.
To build your own application on top of this, first grab the code. You can either grab it from hackage with cabal unpack cairo-appbase, or clone the git repo:
> git clone git://github.com/kfish/cairo-appbase.git
To add widgets, install glade from your distro system and run glade data/main.ui. Save the resulting file in GtkBuilder format.
Note that you must run cabal install to put the UI file in the correct place for your application to pick it up. To modify the code, edit src/cairo-appbase.hs. Hooking up functions to widgets is very simple: get a widget by name (which you set in ui file), and hook one of its signals (which you found in the Signals tab in glade) to an IO () action:
> cut1 <- get G.castToMenuItem "cut1"
> G.onActivateLeaf cut1 $ myCut
The template code includes a trivial definition of myCut:
> myCut :: IO ()
> myCut = putStrLn "Cut"
A real application will want to pass data to the callback. In C, this is fairly tedious as you only have a single void * to pass to callbacks as user_data, and applications typically do lots of marshalling and unmarshalling to pass data around. In Haskell however, you can make yourself a more complex callback handler and use a curried version of it in each instance:
> cut1 <- get G.castToMenuItem "cut1"
> G.onActivateLeaf cut1 $ myComplexCut project phase 7
> myCut :: Project -> MoonPhase -> LuckyNumber -> IO ()
> myCut project phase num = do
> let selection = currentSelection project
> when (phase == Full) howl
> when (num /= 7) fail
> doActualCut selection
An interpreter and debugger for the cap language.
Capri (abbreviation of CAbal PRIvate) is a wrapper program on top of cabal-install to operate it in project-private mode. In this mode, there is no global or user package databases; only one package database is defined, private to the project, located under the root directory of a project.
Capri invokes cabal-install and ghc-pkg in the way that only project's private package database is visible. Starting with minimally required set of packages, all necessary dependencies will be installed into that database, not affecting user or global databases.
Capri is mainly intended to build executable programs. It depends on certain features of GHC, and is not usable with other Haskell compilers.
Further reading: http://www.haskell.org/haskellwiki/Capri
This package provides classes for a consistent API to data structures. The behaviour of the interface is specified by QuickCheck properties. It is intended as an evolution of the API of the data structures in the containers package.
A generic interface for cryptographic operations (hashes, ciphers, randomness). Maintainers of hash and cipher implementations are encouraged to add instances for the classes defined in Crypto.Classes. Crypto users are similarly encouraged to use the interfaces defined in the Classes module. Any concepts or functions of general use to more than one cryptographic algorithm (ex: padding) is within scope of this package.
A test framework for hash and cipher operations using the crypto-api interface. Known answer tests (KATs) for common cryptographic algorithms are included. Patches welcome (both adding KATs for more algorithms or property tests for classes of algorithms).
Generate graphs of darcs repository activity
datapacker is a tool to group files by size. It is designed to group files such that they fill fixed-size containers (called "bins") using the minimum number of containers. This is useful, for instance, if you want to archive a number of files to CD or DVD, and want to organize them such that you use the minimum possible number of CDs or DVDs.
In many cases, datapacker executes almost instantaneously. Of particular note, the hardlink action can be used to effectively copy data into bins without having to actually copy the data at all.
datapacker is a tool in the traditional Unix style; it can be used in pipes and call other tools.
Dependent finite maps (partial dependent products)
Happstack backend for the digestive-functors library
Snap backend for the digestive-functors library
This package provides the typeclasses that form the Edison API and other common utility modules.
Show more results