2(c) 2022, Composewell Technologies.
3SPDX-License-Identifer: BSD-3-Clause
8A computer programmer is faced with different types of programming tasks. A
9software project may involve programming tasks that have different
10characteristics. Usually programmers are forced to choose different programming
11tools for different tasks.
13For example, you may be writing shell or python scripts to automate system
14administration or deployment tasks, or for managing cloud deployments,
15configuration. For such tasks you may not be worried about the performance but
16you may be worried about correctness and how quickly you can achieve what you
17want to do, and maintainability of the programs. For such tasks you would
18usually reach out for python, shell scripting or other such high level
21On the other hand you may be writing a program that require very high
22performance and optimal use of resources so that the task can be finished
23faster and requires less resources to save cost. High level scripting languages
24(e.g. python or shell) may be unsuitable for such tasks because they could be
2510x-100x slower compared to lower level languages like `Rust`, `C`, `C++` or
28If you would like to use the same language and tools for all your
29programming tasks, be it a quick script or a high performance system,
30or if you do not want to build different set of teams for programming
31tasks of different nature then Haskell Streamly is just the programming
34Whether you are writing scripts to manage your systems, or to automate mundane
35tasks like organizing photos or files on your computer, or to write tests for
36your software systems, or crawling the network to glean some information, or
37writing a quick network server, or writing algorithmic trading systems, or
38doing high performance intensive data processing, Haskell Streamly is just the
41Haskell Streamly is a very high level programming framework, like Python or
42Shell or Sed or AWK, in fact much higher level than those, but at the same time
43provides high performance like C or Rust. The ability to compose programs using
44high level combinators in Haskell is unmatched. Not just efficient programs but
45you can write programs that scale on multiple CPUs with the same ease. Streamly
46uses the full power of Haskell to make concurrency composable in declarative
47style, so that you can use concurrent programming fearlessly with the same ease
48as non-concurrent programming.
50Although Haskell is a compiled programming language it comes with an
51interpreter (GHCi) which allows you to run Haskell code interactively like an
52interpreted language. Haskell has a strong static type system, yet in most
53cases you do not have to annotate the types because it infers the types
56You can keep systems written with Haskell Streamly extremely modular using
57reusable building blocks, modularity is the fundamental characteristic and
58a design goal of Streamly. At the same time Haskell allows you to do fearless
59refactoring of your program to continuously evolve it without the fear of
60introducing more bugs or breaking it every time you touch it.
62The type safety and immutability by default in Haskell avoids a lot of bugs
63that would otherwise find their way into your programs if you are using less
64safe languages. You focus on your business logic rather than the correctness
65issues imposed by the programming paradigm.
67Haskell is extensible, you can integrate C programs with Haskell very easily.
68Programs written in Haskell work on `macOS`, `Windows`, `Linux` or any Unix
69like system and even on the browser using the Java Script and Web assembly
72Haskell Streamly is a standard library for Haskell and supplements the Haskell
73base package. It comes equipped with basic data structures and functions like
74Streams, Arrays, Folds, Parsers, file system facilities like directory IO, file
75IO, Unicode text processing, network processing using low level sockets or high
76level operations. Concurrent programming facilities or time domain programming
79The collection of high level building blocks provided by the Streamly ecosystem
80allow you to write a variety of programs quickly. You can turn your shell or
81python scripts into safe, highly modular and high performance programs using
82`streamly-coreutils`. Moreover, you do not have to depend on any native OS
83packages installed on the system. Or if you would like to use native
84executables in your programs you can use `streamly-process` to invoke the
85executables and connect the data streams generated like pipes in a seamless
86manner. Or if you would like to use the shell to invoke and compose the
87executables and integrate it seamless in your program you can do that too using
88`streamly-shell`. If you would like to use statistical computation in your
89programs try out `streamly-statistics`. Streamly ecosystem is evolving and
90there are more useful packages in the works. In addition, you have thousands of
91Haskell packages that are available on Hackage.
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list