In my opinion, network programming in Haskell should use strict evaluation except atomicModifiyIORef', to avoid space leak. Strict and StrictData language extension are introduced in GHC 8.0 and it's days of GHC 8.6. So, it's good time to introduce them to network.
For this purpose, all undefined should be removed. It's very easy. But during this work, I experienced that undefined are evaluated even if they are removed from the source code. The reason is here: https://gitlab.haskell.org/ghc/ghc/issues/16810
When such inlinable functions are fixed in GHC 8.8, I would like to add the following to network.cabal:
if impl(ghc >= 8.8)
Default-Extensions: Strict StrictData
In my opinion, network programming in Haskell should use strict evaluation except
atomicModifiyIORef', to avoid space leak.StrictandStrictDatalanguage extension are introduced in GHC 8.0 and it's days of GHC 8.6. So, it's good time to introduce them tonetwork.For this purpose, all
undefinedshould be removed. It's very easy. But during this work, I experienced thatundefinedare evaluated even if they are removed from the source code. The reason is here: https://gitlab.haskell.org/ghc/ghc/issues/16810When such inlinable functions are fixed in GHC 8.8, I would like to add the following to
network.cabal: