# haskell

Haskell is the epitome of many of the successes of strong type systemsand some of the worst programming language decisions made.

This is an incredible breakdown of how GHCworks. Absolutely worthlearning if you want to learn more about the language, but I'm not sureto what degree it's worth spending time on now.

GitHub - thma/WhyHaskellMatters: In this article I try to explain whyHaskell… is an overview ofthe language and why it matters.

# Utilities

## Hoogle

Search for programs using their type. This is the aspect of Haskellthat's most appealing: with more information encoded into the typesystem - safety guarantees aside - we get far, far better program searchand reuse - because our types generally express the functionality of theprogram! Being able to reuse code is incredibly nice for lots ofreasons.

https://aaronguo1996.github.io/project/hoogleplus/ hoogle plus ::search for **combinations** of functions with hoogle! This is also athttps://hoogleplus.goto.ucsd.edu/.

# Simple Haskell

is a movement to program in only a simple, disciplined subset of thelanguage, in order to build a robust foundation of beginner-friendlycode that's easy to onboard programmers to without digging into theweeds of scary monads and typeclasses. Simple Haskell preludes exist toreplace the default prelude, and the discipline usually recommends a setof language extensions to get everyone started.

Write JuniorCode: Aplea for Haskell developers to actually write code that people canunderstand and hire for. Boring HaskellManifestoalso describes this, as does SimpleHaskell. It's very possible that moretime has been spent pontificating about Haskell than actually writingproduction code in the service… My thoughts on Haskell in 2020 - MarcoSampellegrini.

Haskell mini-patterns handbook ::Kowainik: Abook of Haskell design patterns. (I recall reading this on a particularlunch break out of the Skira office; the ideas sunk in at the time andcould be applied to our class PL code. We should have used it).

There are many resources written with this practice in mind.

- Real World Haskell
- The golden rule of software quality :haskell
- GitHub - graninas/software-design-in-haskell: Software Design inHaskell. A s…
- Appendix to Software Design in Haskell ·GitHub
- Type Classes: start learning haskell withgood documentation, various inline demonstrations, and a book.
- haskell competencymatrix:to identify where you're at with respect to your Haskell knowledge andfigure out what you have left to learn.
- adventures in uncertainty: Towards Faster Iteration in IndustrialHaskell

# GHC

How Accursed and Unutterable isaccursedUnutterablePerformIO?Creating GHC RewriterulesRuntime Support for Multicore Haskell: a Retrospective \| SIGPLANBlog:On multicore Haskell. One of the biggest benefits of pure functionalprogramming is parallel computation, so this better work well. TypeTechnology Tree : ezyang’sblog: How to considerdifferent Haskell language extensions. What do they mean? How can theybe applied? How do we determine when to use them?GHC.Generics:Datatype-generic functions that programmers can use and reuse,parameterizing them.

## TemplateHaskell

backlinks

Macros

An excellent Template HaskellTutorial, and another:https://github.com/leonidas/codeblog/blob/master/2011/2011-12-27-template-haskell.md

# Interesting

GitHub - tathougies/hos: The functional Haskellkernel: a kernel for a Haskelloperating system. (What?) Paweł Szulc - Maintainable SoftwareArchitecture in Haskell (with Polysemy)-…Hasktorch: A Comprehensive Haskell Library for DifferentiableFunctional Prog…Implementing Linear Haskell -YouTube Lambda calculuson the type level with GHC 7.11.20151212. ·GitHub

# Categories

Comonads \| Bartosz Milewski's ProgrammingCafe Categorytheoryhttps://ncatlab.org/nlab/show/comonad#definitionMath Haskell and CategoryTheory Categorytheory Category Theory \|Haskell LanguageTutorialhttp://www.haskellforall.com/2013/02/you-could-have-invented-comonads.html

# Getting Started

## Setting Up Stack

```
wget https://get.haskellstack.org/stable/linux-x86_64-static.tar.gz
rm -rf linux-x86_64-static.tar.gz
export PATH=$PATH:./s
```

### Creating a project

creating project:

```
stack new Other simple
stack setup
getting ncurses5-compat-libs:
```

# Proofs in Haskell?

- A casual guide to proving things inHaskell
- Dependent types in the context of Haskell (limitedsupport)
- https://ucsd-progsys.github.io/liquidhaskell-blog/2020/04/12/polymorphic-perplexion.lhs/:Expression of orderings with haskell dependent types, vialiquidhaskell.
- A more rigorous overview of dependently typed programming inHaskell
- Towards Tactic Metaprogramming in Haskell :: ReasonablyPolymorphic

# things to remake in haskell (and maybe racket!)

https://m.youtube.com/watch?v=FYTZkE5BZ-0 :: makemusic with haskell fromscratch

# etc

GitHub - davdar/parsing-with-derivatives-haskell: The original parsingwith d…:Parsing with derivatives, as the parser maps to one! Very cool idea.Haskell for all: Introductions to advanced HaskelltopicsLocally Namelessdjinn: Generate Haskell code from atype! With an associatedblog post: Let’s play a game : ezyang’sblog. Conal Elliott» Blog Archive » “Everything is a function” inHaskell?linear algebra libraryimplemented and experimented with in Haskell. accelerate: An embeddedlanguage for accelerated arrayprocessing: