# Streamly Ecosystem The Streamly ecosystem is a collection of packages built on top of Streamly, extending its core with higher-level functionality for real-world programming. For a combined view of the reference documentation across all ecosystem packages, visit: 👉 [Streamly Module Listing](https://streamly.composewell.com/module-listing.html) ## streamly-process **`streamly-process`** lets you use operating system (OS) commands in Haskell programs as if they were native functions, by treating their inputs and outputs as Haskell streams. This makes it easy to write high-level Haskell scripts that perform tasks similar to shell pipelines but with **C-like performance, strong safety guarantees, modularity, and refactorability**. For example, the shell command: ```bash echo "hello world" | tr [a-z] [A-Z] ``` can be expressed in Haskell as: ``` >>> :{ Command.toBytes [str|echo "hello world"|] -- Stream IO Word8 & Command.pipeBytes [str|tr [a-z] [A-Z]|] -- Stream IO Word8 & Stream.fold Stdio.write -- IO () :} HELLO WORLD ``` 👉 [streamly-process on GitHub](https://github.com/composewell/streamly-process) ## streamly-coreutils **`streamly-coreutils`** reimplements GNU coreutils utilities as composable Haskell functions—concurrent where possible. Examples include `test`, `cp`, `ls`, `ln`, `mv`, `rm`, `touch`, `mkdir`, `pwd`, `cd`, `stat`, `readlink`, `which`, `sleep`, and more. This allows you to use familiar Unix-style tools directly within streaming Haskell programs, combining the convenience of shell scripting with the safety, modularity, and performance of Haskell. 👉 [streamly-coreutils on GitHub](https://github.com/composewell/streamly-coreutils) ## streamly-statistics **`streamly-statistics`** offers functionality similar to the Haskell `statistics` package, but with streaming APIs. Its unique strength is support for **incremental statistical analysis on sliding windows of data**, seamlessly integrated into streaming pipelines. This makes it ideal for real-time analytics, monitoring systems, or any application that processes continuous data streams. 👉 [streamly-statistics on GitHub](https://github.com/composewell/streamly-statistics) ## streamly-fsevents **`streamly-fsevents`** provides a streaming interface to file system events. It allows you to **watch files or directories for changes**— such as creation, modification, deletion, or renaming—and consume those events as Haskell streams. Internally, it uses efficient system facilities like `inotify` on Linux for scalable event monitoring. This makes it well-suited for building **real-time file watchers, synchronization tools, live-reload servers, or monitoring pipelines**. 👉 [streamly-fsevents on GitHub](https://github.com/composewell/streamly-fsevents) ## Compatibility Packages Streamly can interwork with other packages in the Haskell ecosystem providing similar functionality. These packages enable the interconversion. ### streamly-bytestring Package for converting streamly `Array` type to the bytestring package's `ByteString` type and vice-versa. 👉 [streamly-bytestring on GitHub](https://github.com/psibi/streamly-bytestring) ### streamly-text Package for converting streamly `Array` type to the `text` package's `Text` type and vice-versa. 👉 [streamly-text on GitHub](https://github.com/composewell/streamly-text) ### streamly-filepath Package for converting streamly `Path` type to the `filepath` package's `OsPath` type and vice-versa. 👉 [streamly-filepath on GitHub](https://github.com/composewell/streamly-filepath)