Modernize your engineering craft.

Deliver fast, reduce cost, and boost quality by pure functional programming.

Large Scale Software Design

The big ball of mud

Software designed with traditional programming paradigms often ends up as a big ball of mud. In contrast, pure functional programming encourages the construction of software using Lego-like building blocks. Strongly typed building blocks either fit together or don't and you know that at compile time.

The debugging hell

Debugging is the most time consuming activity in software development. Haskell as a pure functional programming language reduces run-time bugs and cuts the time spent in debugging drastically, leading to a reduction in development time and ensuring high-quality software. Most importantly, it improves the quality of life for software developers, reducing the time spent in labor and increasing the time spent in design thought.

Haskell

The language

Haskell is a modern, research-developed, high-level, strongly-typed pure functional programming language.

Purity means the compiler and the programmer are explicitly aware of all the state in the program at any given point. It helps in strong reasoning about the correctness of the program by the programmer as well as the compiler. Strong static typing and purity result in a large majority of bugs avoided at compile time.

Learn more about Haskell

The ecosystem

Haskell comes equipped with a high-quality toolchain including GHC the compiler, cabal the build tool, and the Haskell language server to help in navigating and editing the code. You get a rich collection of packages on Hackage, the Haskell package repository, hosting thousands of packages for all types of programming tasks.

Do more with less!

Declarative composition of programs and minimal debugging helps you develop software fast, with higher quality, lesser bugs on deployment, with much smaller team size and more importantly with much less frustration.

How about performance?

Haskell Streamly examples demonstrate that Haskell can achieve performance comparable to C. If you have a use case or example that seems problematic we can work on it.

But Haskell is garbage collected

Garbage collection overhead matters the most in tight loops where the program spends most of the time. With the help of stream fusion, GHC can remove boxing in tight loops completely, removing the GC overhead entirely. Haskell Streamly library leverages this and produces unboxed loops as you would write in C.

For long-lived large data structures, mutable cells can be used to reduce the amount of garbage generated on updates.

Haskell is the right choice

Haskell provides features that are necessary to create software that is correct by construction, can be composed declaratively using building blocks, and provides high performance at the same time.

Haskell Streamly

Open Source Haskell Library

Streamly is an open-source Haskell library that provides essential functionality to write large, scalable, and concurrent programs idiomatically with performance competitive to C programs.

Learn more about streamly

Dataflow programming

Streamly can be used for high-performance and concurrent dataflow programming wherein you can create modular pipelines for streaming data processing and run the individual tasks in a pipeline or the pipelines themselves concurrently.

Idiomatic Haskell

Streamly provides modular combinators that combine smaller pieces of code into larger pieces. We can use idioms or recipes to combine readily available building blocks creating higher-level components for custom tasks.

Using Streamly, even concurrent and systems programs can be written idiomatically without compromising performance.

High Performance

Streamly achieves high performance by exploiting the global program optimization and stream fusion optimizations of Haskell GHC for loop fusion.

High composability along with high performance is achievable due to the purity of the language allowing the compiler to reason about the code and perform many interesting code-to-code transformations.

Contribute

Streamly is an evolving library, development is in full swing on github, with a big roadmap to execute on. If you like it, please give it a star to encourage, if you don't raise an issue, pull requests are even better.

How can we help?

Choosing tools

We can help you in deciding to use Haskell in your projects, choosing readily available components to use, choosing design methodologies, and creating new reusable components for your project. Please get in touch for more information.

Modular design

Using Haskell, everything, including control flow constructs, can be built using primitives. We can continue building higher-level, declarative domain specific languages (DSL) on top of the lower-level building blocks. Expressive DSLs help you in writing concise code quickly.

We can help you in building modular, maintainable domain-specific languages.

Software components

We build essential language frameworks, libraries, and domain-specific languages to create high-quality, highly concurrent, scalable, and distributed software in Haskell.

Most of our work is open source. If there are missing features, libraries in a certain domain, we can help fill the gap.

Performance engineering

We have expertise in high performance and scalable applications, we can help you write large programs, including systems software, idiomatically, using high-level combinators and yet achieve performance comparable to C.

Contact us

Get in touch

Please email us at hello@composewell.com for any queries regarding our products or queries regarding consultation.