Where functional programmers gather.
forall a. (a -> b) -> f a -> f b
From first principles to advanced type-level programming. Tutorials crafted for every level of experience, with interactive examples and clear explanations.
Deep dives into the type system that makes Haskell unique. Hindley-Milner inference, GADTs, type families, and the Curry-Howard correspondence explained with care.
Open-source libraries and tools built by Haskellers for Haskellers. Discover well-typed solutions to real-world problems, from web frameworks to compilers.
Meetups, conferences, and workshops where the Haskell community gathers. ZuriHac, Haskell Symposium, and local user groups worldwide.
Functor f => (a -> b) -> f a -> f b
module Main where
safeDivide :: Int -> Int -> Maybe Int
safeDivide _ 0 = Nothing
safeDivide x y = Just (x `div` y)
main :: IO ()
main = do
let result = safeDivide 10 3
putStrLn ("Result: " ++ show result)
Monad m => m a -> (a -> m b) -> m b
The Glasgow Haskell Compiler documentation. Complete reference for language extensions and runtime behavior.
The Haskell package archive. Over 15,000 libraries for every purpose, from parsers to web servers.
Community-maintained knowledge base. Tutorials, patterns, and collected wisdom from decades of functional programming.
The haskell tag. Thousands of answered questions with clear, well-typed solutions.
The Haskell subreddit. Discussion, announcements, and debates from the global community.
The organization stewarding Haskell's future. Funding, governance, and strategic direction for the ecosystem.