<div dir="auto">Holy mackerel that’s a treasure trove of learning opportunities right there.</div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, 28 Jul 2021 at 4:59 pm, Henning Thielemann <<a href="mailto:lemming@henning-thielemann.de">lemming@henning-thielemann.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
On Wed, 28 Jul 2021, Stuart Hungerford wrote:<br>
<br>
> I've been reading more about the ideas behind "simple" or "boring"<br>
> Haskell and I am wondering if there are libraries or projects that<br>
> exemplify the ideas behind these approaches?<br>
<br>
If it counts, I maintain some libraries that are essentially Haskell 98 + <br>
hierarchical modules. I hoped that it helps users of non-GHC compilers but <br>
it seems there are currently no maintained Haskell compilers other than <br>
GHC and variants. At least, Hugs is still available in Debian.<br>
<br>
<a href="https://hackage.haskell.org/package/alsa-core" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/alsa-core</a><br>
<a href="https://hackage.haskell.org/package/alsa-pcm" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/alsa-pcm</a> <br>
<a href="https://hackage.haskell.org/package/alsa-seq" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/alsa-seq</a><br>
<a href="https://hackage.haskell.org/package/apportionment" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/apportionment</a><br>
<a href="https://hackage.haskell.org/package/audacity" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/audacity</a><br>
<a href="https://hackage.haskell.org/package/battleship-combinatorics" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/battleship-combinatorics</a><br>
<a href="https://hackage.haskell.org/package/bibtex" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/bibtex</a><br>
<a href="https://hackage.haskell.org/package/blas-ffi" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/blas-ffi</a><br>
<a href="https://hackage.haskell.org/package/board-games" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/board-games</a><br>
<a href="https://hackage.haskell.org/package/bool8" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/bool8</a><br>
<a href="https://hackage.haskell.org/package/buffer-pipe" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/buffer-pipe</a><br>
<a href="https://hackage.haskell.org/package/cabal-flatpak" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/cabal-flatpak</a><br>
<a href="https://hackage.haskell.org/package/cabal-sort" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/cabal-sort</a><br>
<a href="https://hackage.haskell.org/package/calendar-recycling" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/calendar-recycling</a><br>
<a href="https://hackage.haskell.org/package/car-pool" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/car-pool</a><br>
<a href="https://hackage.haskell.org/package/check-pvp" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/check-pvp</a><br>
<a href="https://hackage.haskell.org/package/checksum" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/checksum</a><br>
<a href="https://hackage.haskell.org/package/combinatorial" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/combinatorial</a><br>
<a href="https://hackage.haskell.org/package/comfort-graph" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/comfort-graph</a><br>
<a href="https://hackage.haskell.org/package/concurrent-split" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/concurrent-split</a><br>
<a href="https://hackage.haskell.org/package/cpuid" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/cpuid</a><br>
<a href="https://hackage.haskell.org/package/cutter" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/cutter</a><br>
<a href="https://hackage.haskell.org/package/data-accessor-transformers" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/data-accessor-transformers</a><br>
<a href="https://hackage.haskell.org/package/data-accessor" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/data-accessor</a><br>
<a href="https://hackage.haskell.org/package/data-ref" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/data-ref</a><br>
<a href="https://hackage.haskell.org/package/database-study" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/database-study</a><br>
<a href="https://hackage.haskell.org/package/doctest-exitcode-stdio" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/doctest-exitcode-stdio</a><br>
<a href="https://hackage.haskell.org/package/doctest-extract" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/doctest-extract</a><br>
<a href="https://hackage.haskell.org/package/doctest-lib" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/doctest-lib</a><br>
<a href="https://hackage.haskell.org/package/dsp" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/dsp</a><br>
<a href="https://hackage.haskell.org/package/enumset" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/enumset</a><br>
<a href="https://hackage.haskell.org/package/equal-files" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/equal-files</a><br>
<a href="https://hackage.haskell.org/package/event-list" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/event-list</a><br>
<a href="https://hackage.haskell.org/package/explicit-exception" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/explicit-exception</a><br>
<a href="https://hackage.haskell.org/package/fftw-ffi" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/fftw-ffi</a><br>
<a href="https://hackage.haskell.org/package/gnuplot" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/gnuplot</a><br>
<a href="https://hackage.haskell.org/package/group-by-date" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/group-by-date</a><br>
<a href="https://hackage.haskell.org/package/guarded-allocation" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/guarded-allocation</a><br>
<a href="https://hackage.haskell.org/package/hackage-processing" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/hackage-processing</a><br>
<a href="https://hackage.haskell.org/package/hgl-example" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/hgl-example</a><br>
<a href="https://hackage.haskell.org/package/http-monad" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/http-monad</a><br>
<a href="https://hackage.haskell.org/package/iff" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/iff</a><br>
<a href="https://hackage.haskell.org/package/internetmarke" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/internetmarke</a><br>
<a href="https://hackage.haskell.org/package/interpolation" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/interpolation</a><br>
<a href="https://hackage.haskell.org/package/jack" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/jack</a><br>
<a href="https://hackage.haskell.org/package/lapack-ffi-tools" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/lapack-ffi-tools</a><br>
<a href="https://hackage.haskell.org/package/lapack-ffi" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/lapack-ffi</a><br>
<a href="https://hackage.haskell.org/package/latex" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/latex</a><br>
<a href="https://hackage.haskell.org/package/lazyio" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/lazyio</a><br>
<a href="https://hackage.haskell.org/package/llvm-ffi-tools" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/llvm-ffi-tools</a><br>
<a href="https://hackage.haskell.org/package/llvm-ffi" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/llvm-ffi</a><br>
<a href="https://hackage.haskell.org/package/llvm-pkg-config" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/llvm-pkg-config</a><br>
<a href="https://hackage.haskell.org/package/markov-chain" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/markov-chain</a><br>
<a href="https://hackage.haskell.org/package/mbox-utility" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/mbox-utility</a><br>
<a href="https://hackage.haskell.org/package/med-module" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/med-module</a><br>
<a href="https://hackage.haskell.org/package/midi-alsa" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/midi-alsa</a><br>
<a href="https://hackage.haskell.org/package/midi-music-box" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/midi-music-box</a><br>
<a href="https://hackage.haskell.org/package/midi" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/midi</a><br>
<a href="https://hackage.haskell.org/package/mohws" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/mohws</a><br>
<a href="https://hackage.haskell.org/package/monoid-transformer" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/monoid-transformer</a><br>
<a href="https://hackage.haskell.org/package/netlib-ffi" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/netlib-ffi</a><br>
<a href="https://hackage.haskell.org/package/non-empty" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/non-empty</a><br>
<a href="https://hackage.haskell.org/package/non-negative" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/non-negative</a><br>
<a href="https://hackage.haskell.org/package/numeric-quest" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/numeric-quest</a><br>
<a href="https://hackage.haskell.org/package/opensoundcontrol-ht" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/opensoundcontrol-ht</a><br>
<a href="https://hackage.haskell.org/package/pathtype" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/pathtype</a><br>
<a href="https://hackage.haskell.org/package/poll" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/poll</a><br>
<a href="https://hackage.haskell.org/package/pooled-io" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/pooled-io</a><br>
<a href="https://hackage.haskell.org/package/prelude-compat" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/prelude-compat</a><br>
<a href="https://hackage.haskell.org/package/prelude2010" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/prelude2010</a><br>
<a href="https://hackage.haskell.org/package/probability" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/probability</a><br>
<a href="https://hackage.haskell.org/package/quickcheck-transformer" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/quickcheck-transformer</a><br>
<a href="https://hackage.haskell.org/package/reactive-balsa" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/reactive-balsa</a><br>
<a href="https://hackage.haskell.org/package/reactive-banana-bunch" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/reactive-banana-bunch</a><br>
<a href="https://hackage.haskell.org/package/reactive-jack" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/reactive-jack</a><br>
<a href="https://hackage.haskell.org/package/reactive-midyim" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/reactive-midyim</a><br>
<a href="https://hackage.haskell.org/package/sample-frame" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/sample-frame</a><br>
<a href="https://hackage.haskell.org/package/set-cover" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/set-cover</a><br>
<a href="https://hackage.haskell.org/package/shell-utility" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/shell-utility</a><br>
<a href="https://hackage.haskell.org/package/sound-collage" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/sound-collage</a><br>
<a href="https://hackage.haskell.org/package/sox" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/sox</a><br>
<a href="https://hackage.haskell.org/package/soxlib" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/soxlib</a><br>
<a href="https://hackage.haskell.org/package/split-record" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/split-record</a><br>
<a href="https://hackage.haskell.org/package/spreadsheet" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/spreadsheet</a><br>
<a href="https://hackage.haskell.org/package/stm-split" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/stm-split</a><br>
<a href="https://hackage.haskell.org/package/storable-enum" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/storable-enum</a><br>
<a href="https://hackage.haskell.org/package/storable-record" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/storable-record</a><br>
<a href="https://hackage.haskell.org/package/storable-tuple" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/storable-tuple</a><br>
<a href="https://hackage.haskell.org/package/storablevector-carray" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/storablevector-carray</a><br>
<a href="https://hackage.haskell.org/package/storablevector" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/storablevector</a><br>
<a href="https://hackage.haskell.org/package/supercollider-ht" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/supercollider-ht</a><br>
<a href="https://hackage.haskell.org/package/supercollider-midi" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/supercollider-midi</a><br>
<a href="https://hackage.haskell.org/package/tagchup" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/tagchup</a><br>
<a href="https://hackage.haskell.org/package/toilet" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/toilet</a><br>
<a href="https://hackage.haskell.org/package/unicode" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/unicode</a><br>
<a href="https://hackage.haskell.org/package/unique-logic" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/unique-logic</a><br>
<a href="https://hackage.haskell.org/package/unsafe" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/unsafe</a><br>
<a href="https://hackage.haskell.org/package/utility-ht" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/utility-ht</a><br>
<a href="https://hackage.haskell.org/package/wraxml" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/wraxml</a><br>
<a href="https://hackage.haskell.org/package/xml-basic" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/xml-basic</a><br>
<a href="https://hackage.haskell.org/package/youtube" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/youtube</a><br>
<br>
If they are not strictly Haskell 98, I hope they are still "simple" <br>
enough.<br>
</blockquote></div></div>