Haskell

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

This is an [incredible breakdown of how GHC works]. Absolutely worth learning if you want to learn more about the language, but I'm not sure to what degree it's worth spending time on now.

[GitHub - thma/WhyHaskellMatters: In this article I try to explain why Haskell...] is an overview of the language and why it matters.

Utilities

Hoogle

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

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

Simple Haskell

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

[Write Junior Code]: A plea for Haskell developers to actually write code that people can understand and hire for. [Boring Haskell Manifesto] also describes this, as does [Simple Haskell]. It's very possible that more time has been spent pontificating about Haskell than actually writing production code in the service... [My thoughts on Haskell in 2020 - Marco Sampellegrini].

[Haskell mini-patterns handbook :: Kowainik]: A book of Haskell design patterns. (I recall reading this on a particular lunch break out of the Skira office; the ideas sunk in at the time and could be applied to our class PL code. We should have used it).

There are many resources written with this practice in mind.

GHC

[How Accursed and Unutterable is accursedUnutterablePerformIO?]

[Creating GHC Rewrite rules]

[Runtime Support for Multicore Haskell: a Retrospective | SIGPLAN Blog] : On multicore Haskell. One of the biggest benefits of pure functional programming is parallel computation, so this better work well.

[Type Technology Tree : ezyang’s blog]: How to consider different Haskell language extensions. What do they mean? How can they be applied? How do we determine when to use them?

[GHC.Generics]: Datatype-generic functions that programmers can use and reuse, parameterizing them.

TemplateHaskell

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

Interesting

[GitHub - tathougies/hos: The functional Haskell kernel]: a kernel for a Haskell operating system. (What?)

[Paweł Szulc - Maintainable Software Architecture in Haskell (with Polysemy) -...]

[Hasktorch: A Comprehensive Haskell Library for Differentiable Functional Prog...]

[Implementing Linear Haskell - YouTube]

[Lambda calculus on the type level with GHC 7.11.20151212. · GitHub]

Categories

[Comonads |   Bartosz Milewski's Programming Cafe]

{Category theory}

[https://ncatlab.org/nlab/show/comonad#definition]{Math}

[Haskell and Category Theory] {Category theory}

[Category Theory | Haskell Language Tutorial]

[http://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?

things to remake in haskell (and maybe racket!)

[https://m.youtube.com/watch?v=FYTZkE5BZ-0]:: make {music} with haskell from scratch

etc

[GitHub - davdar/parsing-with-derivatives-haskell: The original parsing with d...] : Parsing with derivatives, as the parser maps to one! Very cool idea.

[Haskell for all: Introductions to advanced Haskell topics]

[Locally Nameless]

[djinn: Generate Haskell code from a type]! With an associated blog post: [Let’s play a game : ezyang’s blog].

[Conal Elliott » Blog Archive » “Everything is a function” in Haskell?]

[linear] algebra library implemented and experimented with in Haskell.

[accelerate: An embedded language for accelerated array processing]:

2022-11-14 cd752c4
2022-10-31 a3cd274
2022-10-31 bdaf866
2021-09-22 52a677b
2021-09-21 7732812
2021-08-19 87d9551
2021-08-18 b38011b
2021-04-27 979e582
2021-04-24 71b86f7
2021-04-24 20fde56
2021-04-24 2418bce
2021-03-07 e4b7b65
2021-01-28 b665031
2021-01-20 35e386e
2021-01-19 4e62c15
2021-01-18 af0b1e0
2021-01-17 675fddc
2021-01-15 2695389
2021-01-15 d1b02d2
2021-01-15 4cf5fb9
2021-01-15 f2197ab
2021-01-15 5599273
2020-12-09 eb5a72e
2020-11-18 61959c4
2020-11-17 971e945
2020-11-16 112ddce
2020-11-15 a0eccac