on fec4a83 help sign in
streamly/docs/User/Tutorials/before-you-begin.md
77 lines 2.9 kB history raw
1<!--
2(c) 2022, Composewell Technologies.
3SPDX-License-Identifer: BSD-3-Clause
4-->
6# Before You Begin
8In this tutorial, we assume basic knowledge of Haskell syntax, constructs and
9lazy evaluation. The [Haskell wikibook](https://en.wikibooks.org/wiki/Haskell)
10may be a good place to start and get familiar with Haskell.
12## Installing Haskell
14If you wish to follow along and run the examples in this tutorial, you will
15need to have Haskell tool chain installed.
17You can choose one of the following sections.
19### Haskell Toolchain
21To get started, you will need a fairly recent version (last three major
22versions will work) of the Haskell compiler `ghc` and the build tool
23`cabal` installed on your system. Please see the install instructions
24at https://www.haskell.org/downloads/ .
26### Development Environment using Nix
28If you use the nix package manager, a nix shell for complete
29development environment - including a consistent set of latest streamly
30ecosystem packages, hoogle documentation, vim and vscode editors,
31Haskell language server (HLS) and other tools - is available at
32[streamly-packages][streamly-packages].
34## Building for Performance
36If you wish to run benchmarks, please be sure to build your
37application using the instructions in the [Build Guide](/docs/User/HowTo/Compiling.md).
39## Streamly Library Packages
41Streamly comprises two packages, the
42[streamly-core](https://hackage.haskell.org/package/streamly-core)
43package provides functionality that depends only on boot libraries, and
44the [streamly](https://hackage.haskell.org/package/streamly) package
45provides additional functionality like concurrency, time, lifted
46exceptions, and networking.
48For high-level functionality built over streamly like streaming
49system processes, shell programming, GNU coreutils, statistics,
50and compression libraries please see the [streamly ecosystem
51packages](https://streamly.composewell.com/ecosystem.html).
53## Released and Pre-release modules
55Some of the examples in this tutorial may use modules from the
56`Internal` Streamly module hierarchy. These modules are not really
57internal to the library. We classify `Streamly` modules into two
58categories:
60* _Released modules and APIs_: These modules and APIs are
61 stable. Significant changes to these modules and APIs will cause
62 Streamly's version number to change according to the package versioning
63 policy.
64* _Pre-release modules and APIs_: These modules and APIs have not been
65 formally released yet. They may change in the near future, and such
66 changes will not necessarily be reflected in Streamly's package
67 version number. As yet unreleased modules and APIs reside in the
68 `Internal` namespace.
70Please use a minor release upper bound to adhere to the Haskell PVP when
71using a pre-release (internal) module.
73<!--
74Link References.
75-->
77[Streamly]: https://streamly.composewell.com/