CLC seeks nominations for a vacant seat. Who should apply? Anyone who meets the following criteria should apply: Candidates should have enough bandwidth to review merge requests to base on a semi-frequent basis (3 to 5 per month), and sustain this for their 3 years term in a healthy manner. Candidates should be able to...
Today, Matthías and Joachim are interviewing Moritz Angermann. Moritz knew he wanted to use Haskell before he knew Haskell, fixed cross-compilation as his first GHC contribution. We'll talk more about cross-compilation to Windows and mobile platforms, why Template Haskell is the cause of most headaches, why you should be...
The discussion about incentives for stability was interesting. It reminded me of the maintainership standards proposal. I think it would be very useful to have Hackage show information like how quickly a package fixes version bounds when new versions of their dependencies are released.
This is the first of a two-part series of blog posts on GHC specialization, an optimization technique used by GHC to eliminate the performance overhead of ad-hoc polymorphism and enable other powerful optimizations. There will also be a Haskell Unfolder episode about this topic.
When composing several list-processing functions, GHC employs an optimisation called foldr-build fusion. Fusion combines functions in such a way that any intermediate lists can often be eliminated completely. In this episode, we will look at how this optimisation works, and at how it is implemented in GHC: not as built-in...
ghc-debug is a debugging tool for performing precise heap analysis of Haskell programs (check out our previous post introducing it). While working on Eras Profiling, we took the opportunity to make some much needed improvements and quality of life fixes to both the ghc-debug library and the...
Avi Press gave an excellent talk at Scale By the Bay 2023 about difficulties using Haskell at a startup. He mentions that even experienced Haskellers don’t always know how to use fundamental parts of the language. In particular,...
Sometimes, for example when working with type-level lists, you have to compute with constraints. For example, you might want to say that a constraint holds for all types in a type-level list. In this episode, we will explore this special case of type-level programming in Haskell. We will also revisit type class aliases and take...
On behalf of the Haskell.org committee, I’m pleased to announce the results of the Summer of Haskell 2023. Many impressive and valuable contributions were made to the Haskell ecosystem which I’m excited to share with you in this post...
In this (beginner-friendly) episode, we will use Dijkstra's shortest paths algorithm as an example of how one can go about implementing an algorithm given in imperative pseudo-code in idiomatic Haskell. We will focus on readability, not on performance.
Wouter and Niki interview Jose Calderon, the new Executive Director of the Haskell Foundation. Jose tells why he applied for the job, how he sees the foundation developing over the coming years, and how you can get involved in the Haskell community.
#haskell language server now offers helpful tips. However, stuff like "length will fail on infinite lists is certainly unhelpful for almost all (hehe) lists. And it has no code action to turn it off easily. A little annoying then.
I attempted to recreate it in #haskell, but we don't really have a library on the same level of abstraction. wai is too abstract and network is not abstract enough.
Actually, if you combine network with network-run then it is the right level of abstraction:
{- cabal:
build-depends: base, network, network-run, monad-loops
-}
import Network.Run.TCP
import Network.Socket
import System.IO
import Control.Monad.Loops
main = runTCPServer (Just "127.0.0.1") "9999" talk where
talk s = do
h <- socketToHandle s ReadWriteMode
l <- hGetLine h
case words l of
["GET", resource, "HTTP/1.1"] -> do
whileM_ (("\r" /=) <$> hGetLine h) (pure ())
let path = concat
[ "htdocs/"
, dropWhile (== '/') resource
, if last resource == '/' then "index.html" else ""
]
hPutStr h "HTTP/1.1 200 OK\r\n\r\n"
hPutStr h =<< readFile path
hClose h
_ -> error "todo"
@DiazCarrete with type classes in Haskell my personal ideology is to avoid them unless you're very sure that they are really a good model of your domain and they have specific laws. But indeed, many classes and instances - in base even - don't satisfy that.
CLC Election September 2023 (discourse.haskell.org)
CLC seeks nominations for a vacant seat. Who should apply? Anyone who meets the following criteria should apply: Candidates should have enough bandwidth to review merge requests to base on a semi-frequent basis (3 to 5 per month), and sustain this for their 3 years term in a healthy manner. Candidates should be able to...
Haskell Interlude 41: Mike Angermann (haskell.foundation)
Today, Matthías and Joachim are interviewing Moritz Angermann. Moritz knew he wanted to use Haskell before he knew Haskell, fixed cross-compilation as his first GHC contribution. We'll talk more about cross-compilation to Windows and mobile platforms, why Template Haskell is the cause of most headaches, why you should be...
[Well-Typed Blog] Choreographing a dance with the GHC specializer (Part 1) (well-typed.com)
This is the first of a two-part series of blog posts on GHC specialization, an optimization technique used by GHC to eliminate the performance overhead of ad-hoc polymorphism and enable other powerful optimizations. There will also be a Haskell Unfolder episode about this topic.
Issue 414 :: Haskell Weekly newsletter (haskellweekly.news)
News about the Haskell programming language from 2024-04-04.
Issue 413 :: Haskell Weekly newsletter (haskellweekly.news)
News about the Haskell programming language from 2024-03-28.
The Haskell Unfolder Episode 22: foldr-build fusion (well-typed.com)
When composing several list-processing functions, GHC employs an optimisation called foldr-build fusion. Fusion combines functions in such a way that any intermediate lists can often be eliminated completely. In this episode, we will look at how this optimisation works, and at how it is implemented in GHC: not as built-in...
Issue 400 :: Haskell Weekly newsletter (haskellweekly.news)
News about the Haskell programming language from 2023-12-28.
[Well-Typed Blog] Improvements to the ghc-debug terminal interface (www.well-typed.com)
ghc-debug is a debugging tool for performing precise heap analysis of Haskell programs (check out our previous post introducing it). While working on Eras Profiling, we took the opportunity to make some much needed improvements and quality of life fixes to both the ghc-debug library and the...
Issue 420 :: Haskell Weekly newsletter (haskellweekly.news)
News about the Haskell programming language from 2024-05-16.
foldl traverses with State, foldr traverses with anything (h2.jaguarpaw.co.uk)
Avi Press gave an excellent talk at Scale By the Bay 2023 about difficulties using Haskell at a startup. He mentions that even experienced Haskellers don’t always know how to use fundamental parts of the language. In particular,...
[Well-Typed Blog] When "blocked indefinitely" is not indefinite (well-typed.com)
Consider a Haskell thread trying to read from a TMVar:...
[Well-Typed] The Haskell Unfolder Episode 18: computing constraints (well-typed.com)
Sometimes, for example when working with type-level lists, you have to compute with constraints. For example, you might want to say that a constraint holds for all types in a type-level list. In this episode, we will explore this special case of type-level programming in Haskell. We will also revisit type class aliases and take...
Summer of Haskell - Summer of Haskell 2023 Results (summer.haskell.org)
On behalf of the Haskell.org committee, I’m pleased to announce the results of the Summer of Haskell 2023. Many impressive and valuable contributions were made to the Haskell ecosystem which I’m excited to share with you in this post...
The Haskell Unfolder Episode 20: Dijkstra's shortest paths (well-typed.com)
In this (beginner-friendly) episode, we will use Dijkstra's shortest paths algorithm as an example of how one can go about implementing an algorithm given in imperative pseudo-code in idiomatic Haskell. We will focus on readability, not on performance.
Haskell Interlude 44: José Manuel Calderón Trilla (haskell.foundation)
Wouter and Niki interview Jose Calderon, the new Executive Director of the Haskell Foundation. Jose tells why he applied for the job, how he sees the foundation developing over the coming years, and how you can get involved in the Haskell community.
Issue 422 :: Haskell Weekly newsletter (haskellweekly.news)
News about the Haskell programming language from 2024-05-30.
[Well-Typed Blog] GHC activities report: December 2023–February 2024 (well-typed.com)
Read about the latest GHC development activity in this report from Well-Typed.
Type Theory Forall Podcast: David Christiansen (www.typetheoryforall.com)
In this episode we talk with David Christiansen, he wrote the books Functional Programming in Lean and the Little Typer....
Issue 416 :: Haskell Weekly newsletter (haskellweekly.news)
News about the Haskell programming language from 2024-04-18.