<?xml version="1.0" encoding="UTF-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title xmlns:ns="http://www.w3.org/2005/Atom" ns:type="text">Alternative preludes – Haskell – Aelve Guide</title><id>https://guide.aelve.com/haskell/feed/category/zr69k1hc</id><updated>2018-09-13T21:00:55Z</updated><link xmlns:ns="http://www.w3.org/2005/Atom" ns:href="https://guide.aelve.com/haskell/feed/category/zr69k1hc"/><entry><id>i6vqj1wd</id><title xmlns:ns="http://www.w3.org/2005/Atom" ns:type="text">Prelude</title><updated>2018-09-13T21:00:55Z</updated><content xmlns:ns="http://www.w3.org/2005/Atom" ns:type="html">&lt;h1&gt;  &lt;span class=&#34;item-name&#34;&gt;Prelude&lt;/span&gt;

  
  (&lt;a href=&#34;https://hackage.haskell.org/package/Prelude&#34;&gt;Hackage&lt;/a&gt;)
&lt;/h1&gt;&lt;p&gt;This package provides a &amp;quot;Prelude&amp;quot; module drop-in replacement for &lt;a href=&#34;https://hackage.haskell.org/package/base&#34;&gt;base&lt;/a&gt;&#39;s &lt;code&gt;Prelude&lt;/code&gt; module.&lt;/p&gt;
&lt;p&gt;Goals of this package include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Be reasonably modest and remain close in spirit to the &lt;code&gt;base&lt;/code&gt; package&#39;s scope&lt;/li&gt;
&lt;li&gt;Depend only on &lt;code&gt;base&lt;/code&gt; (via &lt;code&gt;base-noprelude&lt;/code&gt;) for recent GHC versions&lt;/li&gt;
&lt;li&gt;Avoid partial functions being in scope by default; redefine common partial functions such as &lt;code&gt;read&lt;/code&gt; or &lt;code&gt;head&lt;/code&gt; to be &lt;code&gt;Maybe&lt;/code&gt;-valued&lt;/li&gt;
&lt;li&gt;Provide a uniform &amp;quot;Prelude&amp;quot; across multiple GHC releases (currently GHC 7.0 and newer supported) to the extent possible given typeclass restructurings such as AMP or FTP&lt;/li&gt;
&lt;li&gt;Reduce &lt;code&gt;import&lt;/code&gt; clutter by reexporting common verbs from modules such as &lt;code&gt;Control.Monad&lt;/code&gt; and &lt;code&gt;Control.Applicative&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Pros&lt;/h2&gt;&lt;ul&gt;&lt;p&gt;&lt;li&gt;Wide compatibility range extending all the way back to GHC 7.0&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;li&gt;Minimal dependency footprint (only &lt;code&gt;base&lt;/code&gt; for GHC &amp;gt;= 8.0)&lt;/li&gt;&lt;/p&gt;&lt;/ul&gt;&lt;h2&gt;Cons&lt;/h2&gt;&lt;ul&gt;&lt;/ul&gt;</content><link xmlns:ns="http://www.w3.org/2005/Atom" ns:href="https://guide.aelve.com/haskell/alternative-preludes-zr69k1hc#item-i6vqj1wd"/></entry><entry><id>ikoqdt69</id><title xmlns:ns="http://www.w3.org/2005/Atom" ns:type="text">relude</title><updated>2018-08-09T05:24:23Z</updated><content xmlns:ns="http://www.w3.org/2005/Atom" ns:type="html">&lt;h1&gt;  &lt;a href=&#34;https://kowainik.github.io/projects/relude&#34; class=&#34;item-name&#34;&gt;relude&lt;/a&gt;

  
  (&lt;a href=&#34;https://hackage.haskell.org/package/relude&#34;&gt;Hackage&lt;/a&gt;)
&lt;/h1&gt;&lt;p&gt;Alternative to &lt;code&gt;Prelude&lt;/code&gt; from &lt;a href=&#34;https://kowainik.github.io/&#34;&gt;@kowainik&lt;/a&gt; (and originally from Stephen Diehl). Main design goals for &lt;code&gt;relude&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Type-safety and function totality&lt;/li&gt;
&lt;li&gt;Performance&lt;/li&gt;
&lt;li&gt;Convenience&lt;/li&gt;
&lt;li&gt;Minimalism&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;See &lt;a href=&#34;https://github.com/kowainik/relude#relude&#34;&gt;&lt;code&gt;README.md&lt;/code&gt;&lt;/a&gt; for motivation behind &lt;code&gt;relude&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Pros&lt;/h2&gt;&lt;ul&gt;&lt;p&gt;&lt;li&gt;&lt;strong&gt;Excellent documentation:&lt;/strong&gt; Haddock with &lt;code&gt;doctest&lt;/code&gt;-tested examples, tutorial, migration guide from &lt;code&gt;Prelude&lt;/code&gt;.&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;li&gt;&lt;strong&gt;Beginner-friendly:&lt;/strong&gt; doesn&#39;t require advanced Haskell knowledge to use it, but takes advantage of intermediate Haskell features to provide excellent performance and descriptive error messages.&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;li&gt;&lt;strong&gt;Efficient strings:&lt;/strong&gt; focuses on using functions with more efficient string types like &lt;code&gt;Text&lt;/code&gt; or &lt;code&gt;ByteString&lt;/code&gt; instead of &lt;code&gt;String&lt;/code&gt; where appropriate.&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;li&gt;&lt;strong&gt;&lt;em&gt;Opt in&lt;/em&gt; oriented:&lt;/strong&gt; contains various extremely useful functions. But they are not exported by default to not spoil global namespace.&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;li&gt;&lt;strong&gt;Custom HLint rules:&lt;/strong&gt; has &lt;a href=&#34;https://github.com/kowainik/relude/blob/master/.hlint.yaml&#34;&gt;custom &lt;code&gt;hlint&lt;/code&gt; rules&lt;/a&gt; that allow you to improve code quality after migration to &lt;code&gt;relude&lt;/code&gt;.&lt;/li&gt;&lt;/p&gt;&lt;/ul&gt;&lt;h2&gt;Cons&lt;/h2&gt;&lt;ul&gt;&lt;p&gt;&lt;li&gt;&lt;strong&gt;Medium size:&lt;/strong&gt; &lt;code&gt;relude&lt;/code&gt; is not extremely lightweight. To improve convenience, it depends on most common libraries like &lt;code&gt;bytestring&lt;/code&gt;, &lt;code&gt;text&lt;/code&gt;, &lt;code&gt;mtl&lt;/code&gt;, &lt;code&gt;containers&lt;/code&gt;, &lt;code&gt;unordered-containers&lt;/code&gt;, &lt;code&gt;deepseq&lt;/code&gt;, &lt;code&gt;stm&lt;/code&gt;.&lt;/li&gt;&lt;/p&gt;&lt;/ul&gt;&lt;h2&gt;Ecosystem&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Used in:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/kowainik/summoner&#34;&gt;kowainik/summoner&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/kowainik/hit-on&#34;&gt;kowainik/hit-on&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/kowainik/life-sync&#34;&gt;kowainik/life-sync&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/holmusk/three-layer&#34;&gt;holmusk/three-layer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/rkaippully/gamgee&#34;&gt;rkaippully/gamgee&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;See full list here: &lt;a href=&#34;https://packdeps.haskellers.com/reverse/relude&#34;&gt;&lt;code&gt;relude&lt;/code&gt;&#39;s reverse dependencies&lt;/a&gt;&lt;/p&gt;
</content><link xmlns:ns="http://www.w3.org/2005/Atom" ns:href="https://guide.aelve.com/haskell/alternative-preludes-zr69k1hc#item-ikoqdt69"/></entry><entry><id>js87u2gu</id><title xmlns:ns="http://www.w3.org/2005/Atom" ns:type="text">rio</title><updated>2018-01-18T00:04:04Z</updated><content xmlns:ns="http://www.w3.org/2005/Atom" ns:type="html">&lt;h1&gt;  &lt;span class=&#34;item-name&#34;&gt;rio&lt;/span&gt;

  
  (&lt;a href=&#34;https://hackage.haskell.org/package/rio&#34;&gt;Hackage&lt;/a&gt;)
&lt;/h1&gt;&lt;h2&gt;Pros&lt;/h2&gt;&lt;ul&gt;&lt;/ul&gt;&lt;h2&gt;Cons&lt;/h2&gt;&lt;ul&gt;&lt;/ul&gt;</content><link xmlns:ns="http://www.w3.org/2005/Atom" ns:href="https://guide.aelve.com/haskell/alternative-preludes-zr69k1hc#item-js87u2gu"/></entry><entry><id>k0h3yvv9</id><title xmlns:ns="http://www.w3.org/2005/Atom" ns:type="text">papa</title><updated>2017-10-19T20:45:01Z</updated><content xmlns:ns="http://www.w3.org/2005/Atom" ns:type="html">&lt;h1&gt;  &lt;span class=&#34;item-name&#34;&gt;papa&lt;/span&gt;

  
  (&lt;a href=&#34;https://hackage.haskell.org/package/papa&#34;&gt;Hackage&lt;/a&gt;)
&lt;/h1&gt;&lt;p&gt;Multi-package alternative prelude. &lt;code&gt;papa-base&lt;/code&gt; exports the safe and useful things in &lt;code&gt;base&lt;/code&gt;. &lt;code&gt;papa-bifunctors&lt;/code&gt; exports the safe and useful things in &lt;code&gt;bifunctors&lt;/code&gt;. &lt;code&gt;papa&lt;/code&gt; itself exports everything from all sub-packages.&lt;/p&gt;
&lt;h2&gt;Pros&lt;/h2&gt;&lt;ul&gt;&lt;p&gt;&lt;li&gt;Exports lots of useful functions from many libraries&lt;/li&gt;&lt;/p&gt;&lt;/ul&gt;&lt;h2&gt;Cons&lt;/h2&gt;&lt;ul&gt;&lt;p&gt;&lt;li&gt;&lt;code&gt;papa&lt;/code&gt; depends on &lt;code&gt;lens&lt;/code&gt; so has a lot of dependencies&lt;/li&gt;&lt;/p&gt;&lt;/ul&gt;</content><link xmlns:ns="http://www.w3.org/2005/Atom" ns:href="https://guide.aelve.com/haskell/alternative-preludes-zr69k1hc#item-k0h3yvv9"/></entry><entry><id>qlbbk4db</id><title xmlns:ns="http://www.w3.org/2005/Atom" ns:type="text">base-noprelude</title><updated>2017-09-27T22:28:15Z</updated><content xmlns:ns="http://www.w3.org/2005/Atom" ns:type="html">&lt;h1&gt;  &lt;span class=&#34;item-name&#34;&gt;base-noprelude&lt;/span&gt;

  
  (&lt;a href=&#34;https://hackage.haskell.org/package/base-noprelude&#34;&gt;Hackage&lt;/a&gt;)
&lt;/h1&gt;&lt;p&gt;Not actually an alternative Prelude, but rather a convenient way to define your own Prelude. It re-exports all of base except for &lt;code&gt;Prelude&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;GHC will implicitly import the module called &lt;code&gt;Prelude&lt;/code&gt;, which is usually found in the &lt;code&gt;base&lt;/code&gt; package. If, however, you depend on base-noprelude rather than base and your package has a module called &lt;code&gt;Prelude&lt;/code&gt;, that will be used instead, allowing you to customise it to your needs.&lt;/p&gt;
&lt;h2&gt;Pros&lt;/h2&gt;&lt;ul&gt;&lt;p&gt;&lt;li&gt;Assemble your own custom prelude that perfectly fits your needs.&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;li&gt;No imports or &lt;code&gt;NoImplicitPrelude&lt;/code&gt; pragmas at use sites.&lt;/li&gt;&lt;/p&gt;&lt;/ul&gt;&lt;h2&gt;Cons&lt;/h2&gt;&lt;ul&gt;&lt;p&gt;&lt;li&gt;Some assembly required&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;li&gt;It&#39;s possible to make code unreadable by re-defining common names or going overboard with new combinators.&lt;/li&gt;&lt;/p&gt;&lt;/ul&gt;&lt;h2&gt;Ecosystem&lt;/h2&gt;&lt;p&gt;Designed to work out of the box with alternative &lt;code&gt;Prelude&lt;/code&gt; packages such as &lt;a href=&#34;https://hackage.haskell.org/package/Prelude&#34;&gt;Prelude&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Could be combined with one of the actual alternative preludes with a dummy &lt;code&gt;Prelude.hs&lt;/code&gt; that uses the qualified module export technique, so that you don&#39;t have to import the alt-prelude in every module.&lt;/p&gt;
</content><link xmlns:ns="http://www.w3.org/2005/Atom" ns:href="https://guide.aelve.com/haskell/alternative-preludes-zr69k1hc#item-qlbbk4db"/></entry><entry><id>ymq9gh9p</id><title xmlns:ns="http://www.w3.org/2005/Atom" ns:type="text">universum</title><updated>2017-07-08T11:19:24Z</updated><content xmlns:ns="http://www.w3.org/2005/Atom" ns:type="html">&lt;h1&gt;  &lt;span class=&#34;item-name&#34;&gt;universum&lt;/span&gt;

  
  (&lt;a href=&#34;https://hackage.haskell.org/package/universum&#34;&gt;Hackage&lt;/a&gt;)
&lt;/h1&gt;&lt;p&gt;Custom prelude from &lt;a href=&#34;https://github.com/serokell/&#34;&gt;@serokell&lt;/a&gt; team. You can checkout bigger tutorial in &lt;a href=&#34;https://github.com/serokell/universum#universum&#34;&gt;README.md&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Pros&lt;/h2&gt;&lt;ul&gt;&lt;p&gt;&lt;li&gt;Maintained by company which uses Haskell in production&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;li&gt;Reexports a lot of things you usually need in your code (&lt;code&gt;containers&lt;/code&gt;, &lt;code&gt;transformers&lt;/code&gt;, &lt;code&gt;text&lt;/code&gt;, etc.)&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;li&gt;Textual data type is defaulted to &lt;code&gt;Text&lt;/code&gt; instead of &lt;code&gt;String&lt;/code&gt;&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;li&gt;All standard &lt;code&gt;IO&lt;/code&gt; functions are lifted to &lt;code&gt;MonadIO&lt;/code&gt;&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;li&gt;A lot of commonly used idioms and convenient functions are introduced&lt;/li&gt;&lt;/p&gt;&lt;/ul&gt;&lt;h2&gt;Cons&lt;/h2&gt;&lt;ul&gt;&lt;p&gt;&lt;li&gt;&lt;code&gt;Foldable&lt;/code&gt; type hierarchy a little bit reimagined. You might find it unexpected when some things work for &lt;code&gt;Foldable&lt;/code&gt; but doesn&#39;t work anymore when you&#39;re using &lt;code&gt;universum&lt;/code&gt;&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;li&gt;Assumes medium knowledge of Haskell. It&#39;s hard to use &lt;code&gt;universum&lt;/code&gt; for Haskell beginners, unfortunately.&lt;/li&gt;&lt;/p&gt;&lt;/ul&gt;&lt;h2&gt;Ecosystem&lt;/h2&gt;&lt;p&gt;&lt;a href=&#34;https://github.com/input-output-hk/cardano-sl/&#34;&gt;&lt;code&gt;cardano-sl&lt;/code&gt;&lt;/a&gt; uses &lt;code&gt;universum&lt;/code&gt; as a custom prelude.&lt;/p&gt;
</content><link xmlns:ns="http://www.w3.org/2005/Atom" ns:href="https://guide.aelve.com/haskell/alternative-preludes-zr69k1hc#item-ymq9gh9p"/></entry><entry><id>kbrlarbb</id><title xmlns:ns="http://www.w3.org/2005/Atom" ns:type="text">SubHask</title><updated>2017-01-19T23:23:14Z</updated><content xmlns:ns="http://www.w3.org/2005/Atom" ns:type="html">&lt;h1&gt;  &lt;span class=&#34;item-name&#34;&gt;SubHask&lt;/span&gt;

  
  (&lt;a href=&#34;https://hackage.haskell.org/package/subhask&#34;&gt;Hackage&lt;/a&gt;)
&lt;/h1&gt;&lt;p&gt;From the &lt;a href=&#34;https://github.com/mikeizbicki/subhask&#34;&gt;README&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;SubHask is a radical rewrite of the Haskell Prelude. The goal is to make numerical computing in Haskell fun and fast. The main idea is to use a type safe interface for programming in arbitrary subcategories of Hask. For example, the category Vect of linear functions is a subcategory of Hask, and SubHask exploits this fact to give a nice interface for linear algebra. To achieve this goal, almost every class hierarchy is redefined to be more general.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Pros&lt;/h2&gt;&lt;ul&gt;&lt;/ul&gt;&lt;h2&gt;Cons&lt;/h2&gt;&lt;ul&gt;&lt;/ul&gt;</content><link xmlns:ns="http://www.w3.org/2005/Atom" ns:href="https://guide.aelve.com/haskell/alternative-preludes-zr69k1hc#item-kbrlarbb"/></entry><entry><id>z4k1fght</id><title xmlns:ns="http://www.w3.org/2005/Atom" ns:type="text">safe-prelude</title><updated>2017-01-16T06:03:46Z</updated><content xmlns:ns="http://www.w3.org/2005/Atom" ns:type="html">&lt;h1&gt;  &lt;a href=&#34;https://github.com/snoyberg/safe-prelude&#34; class=&#34;item-name&#34;&gt;safe-prelude&lt;/a&gt;

&lt;/h1&gt;&lt;p&gt;Yet another prelude by Michael Snoyman. From the &lt;a href=&#34;https://github.com/snoyberg/safe-prelude&#34;&gt;README&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A Haskell prelude optimized for safety.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;No partial functions, period.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Choose best in class libraries (bytestring, text, etc) and promote them.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Regardless of the versions of underlying libraries, this package will always export a consistent API, so that CPP usage should be constrained to just inside this package.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use generalization (via type classes) when they are well established. For example: &lt;code&gt;Foldable&lt;/code&gt; and &lt;code&gt;Traversable&lt;/code&gt; yes, &lt;code&gt;MonoFoldable&lt;/code&gt; no.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Encourage qualified imports with a consistent naming scheme.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Export any non-conflicting and not-discouraged names from this module that make sense, e.g. &lt;code&gt;ByteString&lt;/code&gt;, &lt;code&gt;Text&lt;/code&gt;, or &lt;code&gt;readIORef&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Pros&lt;/h2&gt;&lt;ul&gt;&lt;/ul&gt;&lt;h2&gt;Cons&lt;/h2&gt;&lt;ul&gt;&lt;p&gt;&lt;li&gt;Not on Hackage yet.&lt;/li&gt;&lt;/p&gt;&lt;/ul&gt;</content><link xmlns:ns="http://www.w3.org/2005/Atom" ns:href="https://guide.aelve.com/haskell/alternative-preludes-zr69k1hc#item-z4k1fght"/></entry><entry><id>xl635tv6</id><title xmlns:ns="http://www.w3.org/2005/Atom" ns:type="text">intro</title><updated>2017-01-16T06:03:28Z</updated><content xmlns:ns="http://www.w3.org/2005/Atom" ns:type="html">&lt;h1&gt;  &lt;span class=&#34;item-name&#34;&gt;intro&lt;/span&gt;

&lt;/h1&gt;&lt;p&gt;Minimal prelude which fixes pain points (Text, unsafe functions, etc) in the standard prelude.&lt;/p&gt;
&lt;h2&gt;Pros&lt;/h2&gt;&lt;ul&gt;&lt;p&gt;&lt;li&gt;Good support for Text over String.&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;li&gt;Common IO functions are generalized to work in any MonadIO.&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;li&gt;Has explicit an export list rather than exporting entire modules. This makes the Haddock documentation so much more useful.&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;li&gt;Avoids to export unsafe functions&lt;/li&gt;&lt;/p&gt;&lt;/ul&gt;&lt;h2&gt;Cons&lt;/h2&gt;&lt;ul&gt;&lt;p&gt;&lt;li&gt;Does not export &#39;return&#39; and many other common functions. This means it&#39;s a bit of an effort to migrate existing code to the new Prelude.&lt;/li&gt;&lt;/p&gt;&lt;/ul&gt;</content><link xmlns:ns="http://www.w3.org/2005/Atom" ns:href="https://guide.aelve.com/haskell/alternative-preludes-zr69k1hc#item-xl635tv6"/></entry><entry><id>cfe34g8u</id><title xmlns:ns="http://www.w3.org/2005/Atom" ns:type="text">pregame</title><updated>2016-12-27T03:42:06Z</updated><content xmlns:ns="http://www.w3.org/2005/Atom" ns:type="html">&lt;h1&gt;  &lt;span class=&#34;item-name&#34;&gt;pregame&lt;/span&gt;

  
  (&lt;a href=&#34;https://hackage.haskell.org/package/pregame&#34;&gt;Hackage&lt;/a&gt;)
&lt;/h1&gt;&lt;p&gt;A prelude for applications. Doesn&#39;t try to fix anything in Haskell, just reexports lots and lots of packages in a single module (&lt;a href=&#34;https://hackage.haskell.org/package/aeson&#34;&gt;aeson&lt;/a&gt;, &lt;a href=&#34;https://hackage.haskell.org/package/lens&#34;&gt;lens&lt;/a&gt;, &lt;a href=&#34;https://hackage.haskell.org/package/data-default&#34;&gt;data-default&lt;/a&gt;, and so on; as well as the usual ones like &lt;a href=&#34;https://hackage.haskell.org/package/bytestring&#34;&gt;bytestring&lt;/a&gt;, &lt;a href=&#34;https://hackage.haskell.org/package/text&#34;&gt;text&lt;/a&gt;, &lt;a href=&#34;https://hackage.haskell.org/package/unordered-containers&#34;&gt;unordered-containers&lt;/a&gt;, etc).&lt;/p&gt;
&lt;h2&gt;Pros&lt;/h2&gt;&lt;ul&gt;&lt;/ul&gt;&lt;h2&gt;Cons&lt;/h2&gt;&lt;ul&gt;&lt;/ul&gt;</content><link xmlns:ns="http://www.w3.org/2005/Atom" ns:href="https://guide.aelve.com/haskell/alternative-preludes-zr69k1hc#item-cfe34g8u"/></entry><entry><id>qjb4tuk2</id><title xmlns:ns="http://www.w3.org/2005/Atom" ns:type="text">helium-overture</title><updated>2016-09-03T15:53:44Z</updated><content xmlns:ns="http://www.w3.org/2005/Atom" ns:type="html">&lt;h1&gt;  &lt;span class=&#34;item-name&#34;&gt;helium-overture&lt;/span&gt;

  
  (&lt;a href=&#34;https://hackage.haskell.org/package/helium-overture&#34;&gt;Hackage&lt;/a&gt;)
&lt;/h1&gt;&lt;h2&gt;Pros&lt;/h2&gt;&lt;ul&gt;&lt;/ul&gt;&lt;h2&gt;Cons&lt;/h2&gt;&lt;ul&gt;&lt;/ul&gt;</content><link xmlns:ns="http://www.w3.org/2005/Atom" ns:href="https://guide.aelve.com/haskell/alternative-preludes-zr69k1hc#item-qjb4tuk2"/></entry><entry><id>jq1ud3vu</id><title xmlns:ns="http://www.w3.org/2005/Atom" ns:type="text">foundation</title><updated>2016-08-15T18:29:23Z</updated><content xmlns:ns="http://www.w3.org/2005/Atom" ns:type="html">&lt;h1&gt;  &lt;a href=&#34;http://haskell-foundation.readthedocs.io/en/latest/&#34; class=&#34;item-name&#34;&gt;foundation&lt;/a&gt;

  
  (&lt;a href=&#34;https://hackage.haskell.org/package/foundation&#34;&gt;Hackage&lt;/a&gt;)
&lt;/h1&gt;&lt;p&gt;Foundation is a Haskell project to implement a modern &amp;amp; performant standard library with various centrally maintained functionalities.&lt;/p&gt;
&lt;p&gt;Haskell&#39;s base has been designed a while ago and shows its age. For better or worse, it&#39;s also really hard to change base, leading to many interesting but ultimately fruitless discussions, lots of wasted efforts, and/or duplicated pieces and libraries.&lt;/p&gt;
&lt;p&gt;Also many core libraries, which brings lots of welcome modern additions to the language (text, bytestring, vector, &amp;amp; many others), are maintained on the side, without coordination. For example bytestring and vector doesn&#39;t share any code.&lt;/p&gt;
&lt;p&gt;Foundation is trying to provide a solution to those technical and maintainance limitations.&lt;/p&gt;
&lt;h2&gt;Pros&lt;/h2&gt;&lt;ul&gt;&lt;/ul&gt;&lt;h2&gt;Cons&lt;/h2&gt;&lt;ul&gt;&lt;/ul&gt;</content><link xmlns:ns="http://www.w3.org/2005/Atom" ns:href="https://guide.aelve.com/haskell/alternative-preludes-zr69k1hc#item-jq1ud3vu"/></entry><entry><id>our3ktbj</id><title xmlns:ns="http://www.w3.org/2005/Atom" ns:type="text">preliminaries</title><updated>2016-08-15T18:29:19Z</updated><content xmlns:ns="http://www.w3.org/2005/Atom" ns:type="html">&lt;h1&gt;  &lt;span class=&#34;item-name&#34;&gt;preliminaries&lt;/span&gt;

  
  (&lt;a href=&#34;https://hackage.haskell.org/package/preliminaries&#34;&gt;Hackage&lt;/a&gt;)
&lt;/h1&gt;&lt;h2&gt;Pros&lt;/h2&gt;&lt;ul&gt;&lt;/ul&gt;&lt;h2&gt;Cons&lt;/h2&gt;&lt;ul&gt;&lt;/ul&gt;</content><link xmlns:ns="http://www.w3.org/2005/Atom" ns:href="https://guide.aelve.com/haskell/alternative-preludes-zr69k1hc#item-our3ktbj"/></entry><entry><id>vzg6so1h</id><title xmlns:ns="http://www.w3.org/2005/Atom" ns:type="text">rebase</title><updated>2016-04-14T09:46:38Z</updated><content xmlns:ns="http://www.w3.org/2005/Atom" ns:type="html">&lt;h1&gt;  &lt;span class=&#34;item-name&#34;&gt;rebase&lt;/span&gt;

  
  (&lt;a href=&#34;https://hackage.haskell.org/package/rebase&#34;&gt;Hackage&lt;/a&gt;)
&lt;/h1&gt;&lt;p&gt;A pretty interesting prelude – it depends on lots of commonly used packages (&lt;a href=&#34;https://hackage.haskell.org/package/containers&#34;&gt;containers&lt;/a&gt;, &lt;a href=&#34;https://hackage.haskell.org/package/deepseq&#34;&gt;deepseq&lt;/a&gt;, &lt;a href=&#34;https://hackage.haskell.org/package/hashable&#34;&gt;hashable&lt;/a&gt;, &lt;a href=&#34;https://hackage.haskell.org/package/mtl&#34;&gt;mtl&lt;/a&gt;, &lt;a href=&#34;https://hackage.haskell.org/package/text&#34;&gt;text&lt;/a&gt;, &lt;a href=&#34;https://hackage.haskell.org/package/time&#34;&gt;time&lt;/a&gt;, &lt;a href=&#34;https://hackage.haskell.org/package/uuid&#34;&gt;uuid&lt;/a&gt;, &lt;a href=&#34;https://hackage.haskell.org/package/vector&#34;&gt;vector&lt;/a&gt;, and more), and makes their modules available to you via the &lt;code&gt;Rebase.*&lt;/code&gt; namespace – so, for instance, instead of adding a dependency on text and importing &lt;code&gt;Data.Text&lt;/code&gt; you can just import &lt;code&gt;Rebase.Data.Text&lt;/code&gt; and get &lt;code&gt;Data.Text&lt;/code&gt;, &lt;code&gt;Data.Text.IO&lt;/code&gt; and &lt;code&gt;Data.Text.Encoding&lt;/code&gt; simultaneously. This means that you save some imports &lt;em&gt;and&lt;/em&gt; don&#39;t have to manually add a dependency.&lt;/p&gt;
&lt;p&gt;It also provides a &lt;a href=&#34;http://hackage.haskell.org/package/rebase/docs/src/Rebase-Prelude.html&#34;&gt;&lt;code&gt;Rebase.Prelude&lt;/code&gt;&lt;/a&gt; module that reexports many non-conflicting functions and types from other modules (as well as a huge subset of base, by depending on &lt;a href=&#34;https://hackage.haskell.org/package/base-prelude&#34;&gt;base-prelude&lt;/a&gt;).&lt;/p&gt;
&lt;h2&gt;Pros&lt;/h2&gt;&lt;ul&gt;&lt;p&gt;&lt;li&gt;Exports modules in full, not just arbitary subsets.&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;li&gt;Shaves off more dependency declarations than other libraries.&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;li&gt;A superset of &lt;a href=&#34;https://hackage.haskell.org/package/base-prelude&#34;&gt;base-prelude&lt;/a&gt;.&lt;/li&gt;&lt;/p&gt;&lt;/ul&gt;&lt;h2&gt;Cons&lt;/h2&gt;&lt;ul&gt;&lt;p&gt;&lt;li&gt;The &lt;code&gt;Rebase.*&lt;/code&gt; approach can seem ugly to some.&lt;/li&gt;&lt;/p&gt;&lt;/ul&gt;</content><link xmlns:ns="http://www.w3.org/2005/Atom" ns:href="https://guide.aelve.com/haskell/alternative-preludes-zr69k1hc#item-vzg6so1h"/></entry><entry><id>b5a0ohp6</id><title xmlns:ns="http://www.w3.org/2005/Atom" ns:type="text">protolude</title><updated>2016-04-14T09:46:35Z</updated><content xmlns:ns="http://www.w3.org/2005/Atom" ns:type="html">&lt;h1&gt;  &lt;span class=&#34;item-name&#34;&gt;protolude&lt;/span&gt;

  
  (&lt;a href=&#34;https://hackage.haskell.org/package/protolude&#34;&gt;Hackage&lt;/a&gt;)
&lt;/h1&gt;&lt;p&gt;A prelude by Stephen Diehl. Described &lt;a href=&#34;http://www.stephendiehl.com/posts/protolude.html&#34;&gt;here&lt;/a&gt; by its author.&lt;/p&gt;
&lt;p&gt;Reexports:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://hackage.haskell.org/package/base&#34;&gt;base&lt;/a&gt;, &lt;a href=&#34;https://hackage.haskell.org/package/mtl&#34;&gt;mtl&lt;/a&gt;, &lt;a href=&#34;https://hackage.haskell.org/package/deepseq&#34;&gt;deepseq&lt;/a&gt;, &lt;a href=&#34;https://hackage.haskell.org/package/async&#34;&gt;async&lt;/a&gt;, &lt;a href=&#34;https://hackage.haskell.org/package/void&#34;&gt;void&lt;/a&gt;, &lt;a href=&#34;https://hackage.haskell.org/package/safe&#34;&gt;safe&lt;/a&gt; (safer functions for lists)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Text&lt;/code&gt;/&lt;code&gt;LText&lt;/code&gt;, &lt;code&gt;ByteString&lt;/code&gt;/&lt;code&gt;LByteString&lt;/code&gt;, &lt;code&gt;Map&lt;/code&gt;, &lt;code&gt;Set&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Some utility functions (&lt;code&gt;orAlt&lt;/code&gt;, &lt;code&gt;ordNub&lt;/code&gt;, &lt;code&gt;whenM&lt;/code&gt;, etc)&lt;/li&gt;
&lt;li&gt;Rewrites functions/classes that aren&#39;t present in earlier versions of base (&lt;code&gt;bool&lt;/code&gt;, &lt;code&gt;Bifunctor&lt;/code&gt;, etc)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Defines a class for string conversion and generalises functions like &lt;code&gt;show&lt;/code&gt; and &lt;code&gt;print&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Renames &lt;code&gt;id&lt;/code&gt; to &lt;code&gt;identity&lt;/code&gt; (because it&#39;s convenient to be able to name variables &lt;code&gt;id&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Generalises &lt;code&gt;map&lt;/code&gt; to &lt;code&gt;fmap&lt;/code&gt;, generalises &lt;code&gt;head&lt;/code&gt; to &lt;code&gt;Foldable&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Pros&lt;/h2&gt;&lt;ul&gt;&lt;p&gt;&lt;li&gt;Exports more utility functions than other preludes.&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;li&gt;The renaming of &lt;code&gt;id&lt;/code&gt; to &lt;code&gt;identity&lt;/code&gt; is nice.&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;li&gt;Doesn&#39;t do anything radical, so you can start using it quickly.&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;li&gt;Adds warnings to &lt;code&gt;trace&lt;/code&gt;, &lt;code&gt;error&lt;/code&gt; and &lt;code&gt;undefined&lt;/code&gt; (so you can use them but you&#39;re constantly warned that they&#39;re still present in code).&lt;/li&gt;&lt;/p&gt;&lt;/ul&gt;&lt;h2&gt;Cons&lt;/h2&gt;&lt;ul&gt;&lt;p&gt;&lt;li&gt;Exports more functions than other preludes.&lt;/li&gt;&lt;/p&gt;&lt;/ul&gt;&lt;h2&gt;Ecosystem&lt;/h2&gt;&lt;p&gt;&lt;a href=&#34;https://hackage.haskell.org/package/protolude-lifted&#34;&gt;protolude-lifted&lt;/a&gt; – a version with reexports from &lt;a href=&#34;https://hackage.haskell.org/package/lifted-base&#34;&gt;lifted-base&lt;/a&gt; and &lt;a href=&#34;https://hackage.haskell.org/package/lifted-async&#34;&gt;lifted-async&lt;/a&gt; for convenient work in monads other than &lt;code&gt;IO&lt;/code&gt;&lt;/p&gt;
</content><link xmlns:ns="http://www.w3.org/2005/Atom" ns:href="https://guide.aelve.com/haskell/alternative-preludes-zr69k1hc#item-b5a0ohp6"/></entry><entry><id>eq8b4e05</id><title xmlns:ns="http://www.w3.org/2005/Atom" ns:type="text">base-prelude</title><updated>2016-04-14T09:46:30Z</updated><content xmlns:ns="http://www.w3.org/2005/Atom" ns:type="html">&lt;h1&gt;  &lt;span class=&#34;item-name&#34;&gt;base-prelude&lt;/span&gt;

  
  (&lt;a href=&#34;https://hackage.haskell.org/package/base-prelude&#34;&gt;Hackage&lt;/a&gt;)
&lt;/h1&gt;&lt;p&gt;A single module reexporting most definitions in &lt;a href=&#34;https://hackage.haskell.org/package/base&#34;&gt;base&lt;/a&gt;. Doesn&#39;t serve any purpose other than reducing the number of imports, but is still pretty useful. (For me it routinely shaves off 5–10 imports.)&lt;/p&gt;
&lt;h2&gt;Pros&lt;/h2&gt;&lt;ul&gt;&lt;p&gt;&lt;li&gt;You don&#39;t have to learn any new functions, or, well, &lt;em&gt;anything&lt;/em&gt;. Just plug it in and enjoy not having to import things.&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;li&gt;Doesn&#39;t incur any dependencies.&lt;/li&gt;&lt;/p&gt;&lt;/ul&gt;&lt;h2&gt;Cons&lt;/h2&gt;&lt;ul&gt;&lt;p&gt;&lt;li&gt;Doesn&#39;t help with other commonly needed packages (such as &lt;a href=&#34;https://hackage.haskell.org/package/text&#34;&gt;text&lt;/a&gt;, &lt;a href=&#34;https://hackage.haskell.org/package/vector&#34;&gt;vector&lt;/a&gt;, etc).&lt;/li&gt;&lt;/p&gt;&lt;/ul&gt;&lt;h2&gt;Ecosystem&lt;/h2&gt;&lt;p&gt;&lt;a href=&#34;https://hackage.haskell.org/package/rebase&#34;&gt;rebase&lt;/a&gt; – uses base-prelude and exports lots of additional modules&lt;/p&gt;
</content><link xmlns:ns="http://www.w3.org/2005/Atom" ns:href="https://guide.aelve.com/haskell/alternative-preludes-zr69k1hc#item-eq8b4e05"/></entry><entry><id>x8fl6eog</id><title xmlns:ns="http://www.w3.org/2005/Atom" ns:type="text">basic-prelude</title><updated>2016-04-14T09:46:16Z</updated><content xmlns:ns="http://www.w3.org/2005/Atom" ns:type="html">&lt;h1&gt;  &lt;span class=&#34;item-name&#34;&gt;basic-prelude&lt;/span&gt;

  
  (&lt;a href=&#34;https://hackage.haskell.org/package/basic-prelude&#34;&gt;Hackage&lt;/a&gt;)
&lt;/h1&gt;&lt;p&gt;A “foundation” prelude by the author of &lt;a href=&#34;https://hackage.haskell.org/package/classy-prelude&#34;&gt;classy-prelude&lt;/a&gt;. Exports two modules – &lt;code&gt;CorePrelude&lt;/code&gt; (intended for developers who want to make their own prelude), and &lt;code&gt;BasicPrelude&lt;/code&gt; (a simple prelude for users, built on &lt;code&gt;CorePrelude&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://hackage.haskell.org/package/basic-prelude/docs/CorePrelude.html&#34;&gt;&lt;code&gt;CorePrelude&lt;/code&gt;&lt;/a&gt; reexports:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;commonly used functions from &lt;code&gt;Prelude&lt;/code&gt; and other base modules&lt;/li&gt;
&lt;li&gt;types (the usual bunch – &lt;code&gt;Map&lt;/code&gt;, &lt;code&gt;Vector&lt;/code&gt;, &lt;code&gt;HashMap&lt;/code&gt;, &lt;code&gt;ByteString&lt;/code&gt;, &lt;code&gt;Text&lt;/code&gt;, etc)&lt;/li&gt;
&lt;li&gt;a selection of functions from other packages (&lt;code&gt;lift&lt;/code&gt; and &lt;code&gt;liftIO&lt;/code&gt;, &lt;code&gt;&amp;lt;/&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;.&amp;gt;&lt;/code&gt;, as well as hashing functions from &lt;a href=&#34;https://hackage.haskell.org/package/hashable&#34;&gt;hashable&lt;/a&gt;, functions for catching exceptions from &lt;a href=&#34;https://hackage.haskell.org/package/lifted-base&#34;&gt;lifted-base&lt;/a&gt;, and &lt;code&gt;readArgs&lt;/code&gt; from &lt;a href=&#34;https://hackage.haskell.org/package/ReadArgs&#34;&gt;ReadArgs&lt;/a&gt;, a very simple parser for command line arguments)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It also reimplements functions like &lt;code&gt;putStrLn&lt;/code&gt; and &lt;code&gt;print&lt;/code&gt; for &lt;code&gt;Text&lt;/code&gt;, and a small number of utility functions (&lt;code&gt;bool&lt;/code&gt;, &lt;code&gt;equating&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://hackage.haskell.org/package/basic-prelude/docs/BasicPrelude.html&#34;&gt;&lt;code&gt;BasicPrelude&lt;/code&gt;&lt;/a&gt;, additionally:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;reexports &lt;code&gt;Control.Monad&lt;/code&gt;, methods of &lt;code&gt;Foldable&lt;/code&gt; and &lt;code&gt;Traversable&lt;/code&gt;, some functions from &lt;code&gt;Data.List&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;generalises &lt;code&gt;++&lt;/code&gt;, &lt;code&gt;concat&lt;/code&gt;, and &lt;code&gt;map&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;replaces &lt;code&gt;read&lt;/code&gt;, &lt;code&gt;show&lt;/code&gt;, &lt;code&gt;readFile&lt;/code&gt;, etc with their &lt;code&gt;Text&lt;/code&gt;-based equivalents&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Pros&lt;/h2&gt;&lt;ul&gt;&lt;p&gt;&lt;li&gt;Exports functions from &lt;a href=&#34;https://hackage.haskell.org/package/filepath&#34;&gt;filepath&lt;/a&gt; and &lt;a href=&#34;https://hackage.haskell.org/package/hashable&#34;&gt;hashable&lt;/a&gt;, which many other preludes don&#39;t do.&lt;/li&gt;&lt;/p&gt;&lt;/ul&gt;&lt;h2&gt;Cons&lt;/h2&gt;&lt;ul&gt;&lt;p&gt;&lt;li&gt;Doesn&#39;t export &lt;code&gt;&amp;amp;&lt;/code&gt;.&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;li&gt;Focuses on &lt;code&gt;Text&lt;/code&gt;, so can be annoying if you use many libraries that need &lt;code&gt;String&lt;/code&gt;.&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;li&gt;Only reimplements a few functions for compatibility with older versions of base (other preludes reimplement more).&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;li&gt;Feels somewhat opinionated (why &lt;a href=&#34;https://hackage.haskell.org/package/hashable&#34;&gt;hashable&lt;/a&gt; and &lt;a href=&#34;https://hackage.haskell.org/package/ReadArgs&#34;&gt;ReadArgs&lt;/a&gt; but not more commonly used libraries like &lt;a href=&#34;https://hackage.haskell.org/package/deepseq&#34;&gt;deepseq&lt;/a&gt; or &lt;a href=&#34;https://hackage.haskell.org/package/mtl&#34;&gt;mtl&lt;/a&gt;? etc).&lt;/li&gt;&lt;/p&gt;&lt;/ul&gt;</content><link xmlns:ns="http://www.w3.org/2005/Atom" ns:href="https://guide.aelve.com/haskell/alternative-preludes-zr69k1hc#item-x8fl6eog"/></entry><entry><id>elrtmfyb</id><title xmlns:ns="http://www.w3.org/2005/Atom" ns:type="text">classy-prelude</title><updated>2016-04-14T09:46:12Z</updated><content xmlns:ns="http://www.w3.org/2005/Atom" ns:type="html">&lt;h1&gt;  &lt;span class=&#34;item-name&#34;&gt;classy-prelude&lt;/span&gt;

  
  (&lt;a href=&#34;https://hackage.haskell.org/package/classy-prelude&#34;&gt;Hackage&lt;/a&gt;)
&lt;/h1&gt;&lt;p&gt;A prelude that defines lots of ad-hoc typeclasses (e.g. there&#39;s &lt;code&gt;IsMap&lt;/code&gt; with methods like &lt;code&gt;lookup&lt;/code&gt;, &lt;code&gt;insertMap&lt;/code&gt;, etc) and thus removes the need for most qualified imports.&lt;/p&gt;
&lt;p&gt;It also defines some utility functions (&lt;code&gt;whenM&lt;/code&gt;, etc) and reexports lots of commonly used modules (from &lt;a href=&#34;https://hackage.haskell.org/package/time&#34;&gt;time&lt;/a&gt;, &lt;a href=&#34;https://hackage.haskell.org/package/mtl&#34;&gt;mtl&lt;/a&gt;, and so on).&lt;/p&gt;
&lt;h2&gt;Pros&lt;/h2&gt;&lt;ul&gt;&lt;p&gt;&lt;li&gt;Marks &lt;code&gt;undefined&lt;/code&gt; as deprecated (so you&#39;ll know if you&#39;ve accidentally left it in code).&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;li&gt;Goes further than other preludes in removing boilerplate like qualified names, etc.&lt;/li&gt;&lt;/p&gt;&lt;/ul&gt;&lt;h2&gt;Cons&lt;/h2&gt;&lt;ul&gt;&lt;p&gt;&lt;li&gt;Some people dislike ad-hoc typeclasses.&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;li&gt;Without qualified names it&#39;s hard to understand what type you&#39;re operating on.&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;li&gt;Error messages can be scary.&lt;/li&gt;&lt;/p&gt;&lt;/ul&gt;&lt;h2&gt;Ecosystem&lt;/h2&gt;&lt;p&gt;&lt;a href=&#34;https://hackage.haskell.org/package/classy-prelude-conduit&#34;&gt;classy-prelude-conduit&lt;/a&gt;, &lt;a href=&#34;https://hackage.haskell.org/package/classy-prelude-yesod&#34;&gt;classy-prelude-yesod&lt;/a&gt;&lt;/p&gt;
</content><link xmlns:ns="http://www.w3.org/2005/Atom" ns:href="https://guide.aelve.com/haskell/alternative-preludes-zr69k1hc#item-elrtmfyb"/></entry></feed>