Skip to main content

A language that triggers
flow state.

NeoHaskell is a dialect of Haskell that is focused on newcomer-friendliness and productivity.

It is designed to be easy to learn and use, while also being powerful enough to release your app with minimum effort and maximum confidence.

Features

verify = do
joe <- getPerson "Joe"
if joe.age > 18 then
print "Joe is an adult"
else
print "Joe is a child"

A Static that feels like Dynamic

NeoHaskell's type system is so powerful that you'll forget it's there. With type inference, you'll spend less time annotating and more time coding in a language that feels dynamic.

let infiniteList = [1..]
let doubledList = List.map (*2) infiniteList
print (List.toString doubledList)

Lazy Evaluation for Eager Minds

NeoHaskell won't evaluate an expression until it's absolutely needed. This lets you create more efficient code and focus on what to compute rather than how to compute it.

foo = do
threadDelay 500
print "foo"

bar = do
threadDelay 1000
print "bar"

-- will print "foo" and exit
main = race foo bar

Fearless Concurrency

Concurrency is not an afterthought in NeoHaskell; it's baked right in. Write concurrent code without the common pitfalls, and get more done, faster.


Functions like async and race make it easy to write concurrent code. And with concepts like Channels, you'll be able to write concurrent code without the headaches.

"NeoHaskell is cool"
|> Text.toWordList
|> List.map Text.length
|> List.map (\x -> x * x)
|> List.takeIf Int.isEven

A beautiful standard library

NeoHaskell offers a clean and intuitive language design, complemented by a core library that provides all the tools you need to start creating amazing software right away.

Coming Soon

$ neo setup
Setting up NeoHaskell...
Downloading the latest version of the compiler...
Installing build process plugins...
Done!

$ neo build
Building...

$ neo add scotty
Adding 'scotty' to your project...
Installing dependencies...
Done!

An integrated build system

NeoHaskell's CLI tool installs all required utilities and makes multi-platform support a breeze. Whether you're compiling to native code, installing dependencies, or packaging your application for deployment, you'll enjoy a seamless experience.

screen = do
body [] do
image [source "/img.png"]
text [] "Hello World!"

Mobile development

Build mobile applications with NeoHaskell. The CLI tool lets you generate a client package with auto-update support, and the generation of UIs is a breeze with the included UI library.

main = eventSourcing
{ entities = myEntities
, events = myEvents
, reducer = myReducer
, ...
} |> runApp

Pre-thought architecture

Whether you're building a command-line script, a backend, or a UI application, NeoHaskell has the architecture pre-thought, for you. Just generate your project from one of our templates, or just follow the guides in the documentation to setup your project for success!

answer question = [python|
from langchain.llms import OpenAI
llm = OpenAI()
return llm.predict("hi!")
|]

Python interop

With the rise of the AI era, it is now more important than ever to be able to leverage the power of Python's AI ecosystem. NeoHaskell, with its Python interoperability, lets you do just that.


Use LangChain, Stable Diffusion, PyTorch, and other Python libraries right from your NeoHaskell code.

reduction = do
myEvents <- getEvents "myAggregate"
return (
Stream.reduce
myReducer
initialState
myEvents
)

Event Sourcing and CQRS Ready

NeoHaskell aligns well with modern architectural patterns like Event Sourcing and CQRS, making it easier for you to build scalable and maintainable systems.

A Community for People Like You

NeoHaskell is a community of people who are passionate about delivering software in an efficient and enjoyable way. We believe that programming should be fun, and that the best way to learn is to build things.

Therefore, NeoHaskell is a work in progress project. We are aiming to build a language that is delightful to learn and use, strongly focusing on optimizing developers' happiness.

Whether you're a freshman or a senior, a hacker or a rocket scientist, you'll find a place in our community.

Together, we are building the best language for the next generation of developers. Join us!