Hoogle Search
Within LTS Haskell 24.6 (ghc-9.10.2)
Note that Stackage only displays results for the latest LTS and Nightly snapshot. Learn more.
-
Shared functionality between GHC and its boot libraries This library is shared between GHC, ghc-pkg, and other boot libraries. . A note about GHC.Unit.Database: it only deals with the subset of the package database that the compiler cares about: modules paths etc and not package metadata like description, authors etc. It is thus not a library interface to ghc-pkg and is *not* suitable for modifying GHC package databases. . The package database format and this library are constructed in such a way that while ghc-pkg depends on Cabal, the GHC library and program do not have to depend on Cabal.
-
Gio bindings Bindings for Gio, autogenerated by haskell-gi.
-
Client library for the Redis datastore: supports full command set, pipelining. Redis is an open source, advanced key-value store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets and sorted sets. This library is a Haskell client for the Redis datastore. Compared to other Haskell client libraries it has some advantages:
- Compatibility with Latest Stable Redis: Hedis is intended to be used with the latest stable version of Redis (currently 5.0). Most redis commands (http://redis.io/commands) are available as haskell functions, although MONITOR and SYNC are intentionally omitted. Additionally, a low-level API is exposed that makes it easy for the library user to implement further commands, such as new commands from an experimental Redis version.
- Automatic Optimal Pipelining: Commands are pipelined (http://redis.io/topics/pipelining) as much as possible without any work by the user. See http://informatikr.com/2012/redis-pipelining.html for a technical explanation of automatic optimal pipelining.
- Enforced Pub/Sub semantics: When subscribed to the Redis Pub/Sub server (http://redis.io/topics/pubsub), clients are not allowed to issue commands other than subscribing to or unsubscribing from channels. This library uses the type system to enforce the correct behavior.
- Connect via TCP or Unix Domain Socket: TCP sockets are the default way to connect to a Redis server. For connections to a server on the same machine, Unix domain sockets offer higher performance than the standard TCP connection.
-
Helper modules for FFI to BLAS and LAPACK Netlib is a collection of packages for efficient numeric linear algebra. Most prominent parts of Netlib are BLAS and LAPACK. These packages contain functions for matrix computations, solution of simultaneous linear equations and eigenvalue problems. This package provides definitions shared by the packages blas-ffi and lapack-ffi.
-
Network abstraction layer Network.Transport is a Network Abstraction Layer which provides the following high-level concepts: . * Nodes in the network are represented by EndPoints. These are heavyweight stateful objects. . * Each EndPoint has an EndPointAddress. . * Connections can be established from one EndPoint to another using the EndPointAddress of the remote end. . * The EndPointAddress can be serialised and sent over the network, whereas EndPoints and connections cannot. . * Connections between EndPoints are unidirectional and lightweight. . * Outgoing messages are sent via a Connection object that represents the sending end of the connection. . * Incoming messages for all of the incoming connections on an EndPoint are collected via a shared receive queue. . * In addition to incoming messages, EndPoints are notified of other Events such as new connections or broken connections. . This design was heavily influenced by the design of the Common Communication Interface (http://www.olcf.ornl.gov/center-projects/common-communication-interface). Important design goals are: . * Connections should be lightweight: it should be no problem to create thousands of connections between endpoints. . * Error handling is explicit: every function declares as part of its type which errors it can return (no exceptions are thrown) . * Error handling is "abstract": errors that originate from implementation specific problems (such as "no more sockets" in the TCP implementation) get mapped to generic errors ("insufficient resources") at the Transport level. . This package provides the generic interface only; you will probably also want to install at least one transport implementation (network-transport-*).
-
Library for manipulating Operating system strings. This package provides functionality for manipulating OsString values, and is shipped with GHC.
-
Safe, performant, user-friendly and lightweight Haskell Standard Library relude is an alternative prelude library. If you find the default Prelude unsatisfying, despite its advantages, consider using relude instead.
Relude goals and design principles
- Productivity. You can be more productive with a "non-standard" standard library, and relude helps you with writing safer and more efficient code faster.
- Total programming. Usage of partial functions can lead to unexpected bugs and runtime exceptions in pure code. The types of partial functions lie about their behaviour. And even if it is not always possible to rely only on total functions, relude strives to encourage best-practices and reduce the chances of introducing a bug.TODO: table
- Type-safety. We use the "make invalid states unrepresentable" motto as one of our guiding principles. If it is possible, we express this concept through the types.Example: whenNotNull :: Applicative f => [a] -> (NonEmpty a -> f ()) -> f ()
- Performance. We prefer Text over String, use space-leaks-free functions (e.g. our custom performant sum and product), introduce {-# INLINE #-} and {-# SPECIALIZE #-} pragmas where appropriate, and make efficient container types (e.g. Map, HashMap, Set) more accessible.
- Minimalism (low number of dependencies). We do not force users of relude to stick to any specific lens or text formatting or logging library. Where possible, relude depends only on boot libraries. The Dependency graph of relude can give you a clearer picture.
- Convenience. Despite minimalism, we want to bring commonly
used types and functions into scope, and make available functions
easier to use. Some examples of conveniences:
- No need to add containers, unordered-containers, text and bytestring to dependencies in your .cabal file to use the main API of these libraries
- No need to import types like NonEmpty, Text, Set, Reader[T], MVar, STM
- Functions like liftIO, fromMaybe, sortWith are available by default as well
- IO actions are lifted to MonadIO
- Excellent documentation.
- Tutorial
- Migration guide from Prelude
- Haddock for every function with examples tested by doctest.
- Documentation regarding internal module structure
- relude-specific HLint rules: .hlint.yaml
- User-friendliness. Anyone should be able to quickly migrate to relude. Only some basic familiarity with the common libraries like text and containers should be enough (but not necessary).
- Exploration. We have space to experiment with new ideas and proposals without introducing breaking changes. relude uses the approach with Extra.* modules which are not exported by default. The chosen approach makes it quite easy for us to provide new functionality without breaking anything and let the users decide to use it or not.
-
Selective applicative functors Selective applicative functors: declare your effects statically, select which to execute dynamically. This is a library for selective applicative functors, or just selective functors for short, an abstraction between applicative functors and monads, introduced in this paper.
-
Storable instance for Complex Provides a Storable instance for Complex which is binary compatible with C99, C++ and Fortran complex data types. The only purpose of this package is to provide a standard location for this instance so that other packages needing this instance can play nicely together.
-
Efficiently run periodic, on-demand actions API docs and the README are available at http://www.stackage.org/package/auto-update.