Hoogle Search
Within LTS Haskell 24.28 (ghc-9.10.3)
Note that Stackage only displays results for the latest LTS and Nightly snapshot. Learn more.
-
Clash: a functional hardware description language - Prelude library Clash is a functional hardware description language that borrows both its syntax and semantics from the functional programming language Haskell. The Clash compiler transforms these high-level descriptions to low-level synthesizable VHDL, Verilog, or SystemVerilog. Features of Clash:
- Strongly typed, but with a very high degree of type inference, enabling both safe and fast prototyping using concise descriptions.
- Interactive REPL: load your designs in an interpreter and easily test all your component without needing to setup a test bench.
- Higher-order functions, with type inference, result in designs that are fully parametric by default.
- Synchronous sequential circuit design based on streams of values, called Signals, lead to natural descriptions of feedback loops.
- Support for multiple clock domains, with type safe clock domain crossing.
- Prelude library containing datatypes and functions for circuit design
- Import Clash.Prelude
- Alternatively, if you want to explicitly route clock and reset ports, for more straightforward multi-clock designs, you can import the Clash.Explicit.Prelude module. Note that you should not import Clash.Prelude and Clash.Explicit.Prelude at the same time as they have overlapping definitions.
package
classy-prelude-conduit classy-prelude together with conduit functions See docs and README at http://www.stackage.org/package/classy-prelude-conduit
-
Generic types and functions for columnar encoding and decoding The colonnade package provides a way to talk about columnar encodings and decodings of data. This package provides very general types and does not provide a way for the end-user to actually apply the columnar encodings they build to data. Most users will also want to one a companion packages that provides (1) a content type and (2) functions for feeding data into a columnar encoding:
- lucid-colonnade for lucid html tables
- blaze-colonnade for blaze html tables
- reflex-dom-colonnade for reactive `reflex-dom` tables
- yesod-colonnade for yesod widgets
- siphon for encoding and decoding CSVs
-
Count, enumerate, rank and unrank combinatorial objects Counting, enumerating, ranking and unranking of combinatorial objects. Well-known and less well-known basic combinatoric problems and examples. The functions are not implemented in obviously stupid ways, but they are also not optimized to the maximum extent. The package is plain Haskell 98. See also:
- exact-combinatorics: Efficient computations of large combinatoric numbers.
- combinat: Library for a similar purpose with a different structure and selection of problems.
-
Additional shape types for the comfort-array package Some extra array shape types additional to the ones in the comfort-array package. These require some more package dependencies and use type-encoded natural numbers.
- Static.ZeroBased: Like Shape.ZeroBased but with type-encoded number as size.
- Simplex: Simplices of any dimension, where the dimension is encoded in the type. Only a private module for demonstration. Production-ready implementation in comfort-array.
-
Non-GC'd, contiguous storage for immutable data structures This package provides user-facing APIs for working with "compact regions", which hold a fully evaluated Haskell object graph. These regions maintain the invariant that no pointers live inside the struct that point outside it, which ensures efficient garbage collection without ever reading the structure contents (effectively, it works as a manually managed "oldest generation" which is never freed until the whole is released). This package is currently highly experimental, but we hope it may be useful to some people. It is GHC 8.2 and later only. The bare-bones library that ships with GHC is ghc-compact.
-
Monad for allocation and cleanup of application resources This library allows you to allocate resources with clean up strategies when initializing your application. It then provides a Monadic interface to compose multiple resources without having to deal with cleanup operations explicitely.
-
Utilities for Control.Lens.Cons concise provides a handful of functions to extend what you can do with Control.Lens.Cons.
-
Typeclasses, functions, and data types for concurrency and STM. A typeclass abstraction over much of Control.Concurrent (and some extras!). If you're looking for a general introduction to Haskell concurrency, you should check out the excellent Parallel and Concurrent Programming in Haskell, by Simon Marlow. If you are already familiar with concurrent Haskell, just change all the imports from Control.Concurrent.* to Control.Concurrent.Classy.* and fix the type errors.
-
Extra concurrency primitives The concurrent-extra package offers among other things the following selection of synchronisation primitives:
- Broadcast: Wake multiple threads by broadcasting a value.
- Event: Wake multiple threads by signalling an event.
- Lock: Enforce exclusive access to a resource. Also known as a binary semaphore or mutex. The package additionally provides an alternative that works in the STM monad.
- RLock: A lock which can be acquired multiple times by the same thread. Also known as a reentrant mutex.
- ReadWriteLock: Multiple-reader, single-writer locks. Used to protect shared resources which may be concurrently read, but only sequentially written.
- ReadWriteVar: Concurrent read, sequential write variables.