Difference between revisions of "Development Libraries and Tools"
Jump to navigation
Jump to search
DavidTchepak (talk | contribs) (Added Tasty to list of testing frameworks) |
(fix link to ghc user guide) |
||
(11 intermediate revisions by 3 users not shown) | |||
Line 14: | Line 14: | ||
* [http://community.haskell.org/~ndm/hlint/ HLint] - Detect common style mistakes and redundant parts of syntax, improving code quality. |
* [http://community.haskell.org/~ndm/hlint/ HLint] - Detect common style mistakes and redundant parts of syntax, improving code quality. |
||
− | * [http://www.cl.cam.ac.uk/research/hvg/Isabelle/haskabelle.html Haskabelle] - Convert haskell programs to isabelle theories. |
+ | * [http://web.archive.org/web/20170822153049/https://www.cl.cam.ac.uk/research/hvg/Isabelle/haskabelle.html Haskabelle] - Convert haskell programs to isabelle theories. |
− | * [http://community.haskell.org/~ndm/catch/ Catch] - Detect common sources of runtime errors (currently difficult to compile) |
+ | * [http://web.archive.org/web/20180918160517/community.haskell.org/~ndm/catch/ Catch] - Detect common sources of runtime errors (currently difficult to compile) |
* [http://hackage.haskell.org/package/SourceGraph-0.5.5.0 Sourcegraph] - Haskell visualizer |
* [http://hackage.haskell.org/package/SourceGraph-0.5.5.0 Sourcegraph] - Haskell visualizer |
||
Also, GHC when using the "-Wall" option provides a great deal of useful feedback. |
Also, GHC when using the "-Wall" option provides a great deal of useful feedback. |
||
Line 25: | Line 25: | ||
* [http://www.cs.chalmers.se/~rjmh/QuickCheck/ QuickCheck] - powerful testing framework where test cases are generated according to specific properties. |
* [http://www.cs.chalmers.se/~rjmh/QuickCheck/ QuickCheck] - powerful testing framework where test cases are generated according to specific properties. |
||
* [http://hackage.haskell.org/package/HUnit-1.2.2.1 HUnit] - unit testing framework similar to JUnit. |
* [http://hackage.haskell.org/package/HUnit-1.2.2.1 HUnit] - unit testing framework similar to JUnit. |
||
+ | * [https://hackage.haskell.org/package/microspec microspec] - a tiny QuickCheck test library with minimal dependencies |
||
* [http://hspec.github.io/ Hspec] - a testing framework similar to RSpec with support for QuickCheck and HUnit |
* [http://hspec.github.io/ Hspec] - a testing framework similar to RSpec with support for QuickCheck and HUnit |
||
− | * [http://batterseapower.github.com/test-framework/ test-framework] integrates both Hunit and |
+ | * [http://batterseapower.github.com/test-framework/ test-framework] integrates both Hunit and QuickCheck |
− | * [http://hackage.haskell.org/package/HTF |
+ | * [http://hackage.haskell.org/package/HTF The Haskell Test Framework, HTF] integrates both Hunit and QuickCheck. |
* [http://documentup.com/feuerbach/tasty Tasty] - from the website: "lets you combine your unit tests, golden tests, QuickCheck/SmallCheck properties, and any other types of tests into a single test suite" |
* [http://documentup.com/feuerbach/tasty Tasty] - from the website: "lets you combine your unit tests, golden tests, QuickCheck/SmallCheck properties, and any other types of tests into a single test suite" |
||
+ | * [https://github.com/feuerbach/smallcheck SmallCheck] - Similar to QuickCheck, but tests all values up to a particular depth rather than using a sample of randomly generated values. |
||
+ | * [https://hackage.haskell.org/package/dejafu dejafu] - overloadable primitives for testable, potentially non-deterministic, concurrency. See also the [https://mail.haskell.org/pipermail/haskell-cafe/2015-August/121023.html announcement]. |
||
== Dynamic Analysis Tools == |
== Dynamic Analysis Tools == |
||
Line 34: | Line 37: | ||
Tools that analyse your program's run-time behavior to provide useful information, such as coverage or benchmarks. |
Tools that analyse your program's run-time behavior to provide useful information, such as coverage or benchmarks. |
||
− | * [http://community.haskell.org/~ndm/hat/ hat] - analyse each evaluation step of your haskell program. |
+ | * [http://web.archive.org/web/20111002214249/http://community.haskell.org/~ndm/hat/ hat] - analyse each evaluation step of your haskell program. |
− | * [http://projects.unsafeperformio.com/hpc/ hpc] - check evaluation coverage of a haskell program, useful for determining test coverage. |
+ | * [http://web.archive.org/web/20090705020757/projects.unsafeperformio.com/hpc/ hpc] - check evaluation coverage of a haskell program, useful for determining test coverage. |
* [http://hackage.haskell.org/package/criterion criterion] - powerful benchmarking framework. |
* [http://hackage.haskell.org/package/criterion criterion] - powerful benchmarking framework. |
||
* [http://code.haskell.org/ThreadScope/ threadscope] - a new feature on the horizon which allows for benchmarking and visualization of multithreaded performance. |
* [http://code.haskell.org/ThreadScope/ threadscope] - a new feature on the horizon which allows for benchmarking and visualization of multithreaded performance. |
||
− | * [ |
+ | * [https://downloads.haskell.org/~ghc/8.10.3/docs/html/users_guide/profiling.html ghc profiling tools] - a powerful suite of profiling tools exist within GHC itself |
== Ancillary Tools == |
== Ancillary Tools == |
||
Line 47: | Line 50: | ||
* [http://www.haskell.org/haddock/ haddock] documentation system |
* [http://www.haskell.org/haddock/ haddock] documentation system |
||
* [http://www.haskell.org/cabal/ cabal] build system |
* [http://www.haskell.org/cabal/ cabal] build system |
||
− | * [http://community.haskell.org/~ndm/hoogle/ hoogle] type-aware API search engine |
+ | * [http://web.archive.org/web/20130915123541/community.haskell.org/~ndm/hoogle/ hoogle] type-aware API search engine |
+ | * [http://hackage.haskell.org/package/lentil lentil] frugal issue tracker |
Latest revision as of 19:09, 3 February 2021
This page contains a list of useful tools and libraries used frequently in Haskell development, for things such as debugging, benchmarking, static analysis and testing.
Debuggers
- ghci powerful and extensible debugger for GHC.
- hugs a haskell interpreter that includes debugging facilities.
Static Analysis Tools
Tools that perform some form of analysis on your code and provide useful feedback.
- HLint - Detect common style mistakes and redundant parts of syntax, improving code quality.
- Haskabelle - Convert haskell programs to isabelle theories.
- Catch - Detect common sources of runtime errors (currently difficult to compile)
- Sourcegraph - Haskell visualizer
Also, GHC when using the "-Wall" option provides a great deal of useful feedback.
Testing Frameworks
Libraries for testing Haskell.
- QuickCheck - powerful testing framework where test cases are generated according to specific properties.
- HUnit - unit testing framework similar to JUnit.
- microspec - a tiny QuickCheck test library with minimal dependencies
- Hspec - a testing framework similar to RSpec with support for QuickCheck and HUnit
- test-framework integrates both Hunit and QuickCheck
- The Haskell Test Framework, HTF integrates both Hunit and QuickCheck.
- Tasty - from the website: "lets you combine your unit tests, golden tests, QuickCheck/SmallCheck properties, and any other types of tests into a single test suite"
- SmallCheck - Similar to QuickCheck, but tests all values up to a particular depth rather than using a sample of randomly generated values.
- dejafu - overloadable primitives for testable, potentially non-deterministic, concurrency. See also the announcement.
Dynamic Analysis Tools
Tools that analyse your program's run-time behavior to provide useful information, such as coverage or benchmarks.
- hat - analyse each evaluation step of your haskell program.
- hpc - check evaluation coverage of a haskell program, useful for determining test coverage.
- criterion - powerful benchmarking framework.
- threadscope - a new feature on the horizon which allows for benchmarking and visualization of multithreaded performance.
- ghc profiling tools - a powerful suite of profiling tools exist within GHC itself
Ancillary Tools
Tools that aid the development process, such as build tools, revision control systems, and similar, while not performing any interaction with the code itself.