Skip to content

Instantly share code, notes, and snippets.

Avatar
😊
My Twitter: graninas

Alexander Granin graninas

😊
My Twitter: graninas
View GitHub Profile
View FDaA SE CH2 listing
--ghc 8.0.2
type ThermometerName = String
type BarometerName = String
data Method
= ReadThermometer ThermometerName
| ReadBarometer BarometerName
| ReportTemperature
| ReportAtmospherePressure
@graninas
graninas / On_hiring_haskellers.md
Last active Jun 12, 2021
On hiring Haskellers
View On_hiring_haskellers.md

On hiring Haskellers

Recently I noticed the number of the same two questions being asked again and again on different Haskell resources. The questions were “How to get a Haskell job” and “Why is it so hard to find Haskellers?” Although these two are coming from the opposite sides of the hiring process, the answer is really just one. There is a single reason, a single core problem that causes difficulties of hiring and being hired in the Haskell community, and we should clearly articulate this problem if we want to increase the Haskell adoption.

We all know that there are many people wishing to get a Haskell job. And a visible increase of Haskell jobs looks like there should be a high demand for Haskellers. The Haskell community has also grown like crazy past years. But still, why is it so difficult to hire and to be hired? Why can’t companies just hire any single person who demonstrates a deep knowledge of Haskell in blog posts, in chats, on forums, and in talks? And why do Haskell companies avoid hirin

@graninas
graninas / What_killed_Haskell_could_kill_Rust.md
Last active Oct 11, 2021
What killed Haskell, could kill Rust, too
View What_killed_Haskell_could_kill_Rust.md

At the beginning of 2030, I found this essay in my archives. From what I know today, I think it was very insightful at the moment of writing. And I feel it should be published because it can teach us, Rust developers, how to prevent that sad story from happening again.


What killed Haskell, could kill Rust, too

What killed Haskell, could kill Rust, too. Why would I even mention Haskell in this context? Well, Haskell and Rust are deeply related. Not because Rust is Haskell without HKTs. (Some of you know what that means, and the rest of you will wonder for a very long time). Much of the style of Rust is similar in many ways to the style of Haskell. In some sense Rust is a reincarnation of Haskell, with a little bit of C-ish like syntax, a very small amount.

Is Haskell dead?

@graninas
graninas / haskell_design_patterns.md
Last active Dec 10, 2020
Haskell Design Patterns
View haskell_design_patterns.md

Design patterns in Haskell

This is a list of patterns. I'm collecting this list with an idea to write a book similar to the GoF book.

My patterns:

  • Typed / Untyped pattern
  • Typed Avatar pattern (see Hydra and Node)
    • Typed Options pattern (see EulerHS)
  • Control Structure pattern (see CLI control structure in Hydra and similar in Node)
@graninas
graninas / haskeller_competency_matrix.md
Last active Oct 17, 2021
Haskeller competency matrix
View haskeller_competency_matrix.md

Haskeller Competency Matrix

See also List of materials about Software Design in Haskell

Junior Middle Senior Architect
Haskell level Basic Haskell Intermediate Haskell Advanced Haskell Language-agnostic
Haskell knowledge scope Learn you a Haskell Get programming with Haskell Haskell in Depth Knows several languages from different categories
Get programming with Haskell Haskell in Depth Functional Design and Architecture
[Other books on Software Engineering in Haskell](https://github.com/graninas/software-design-in-haskell#Books-on-So
View gist:8f43592d51d62ebbcb2b212e74eb7ee5
data User = User
{ firstName :: String
, secondName :: String
}
-- The User data type has field firstName, it's a string.
-- firstName :: User -> String
-- secondName :: User -> String
@graninas
graninas / appendix-to-software-design-in-haskell.md
Last active Sep 13, 2020
Appendix to Software Design in Haskell
View appendix-to-software-design-in-haskell.md
@graninas
graninas / haskell_design_showcase_projects.md
Last active Feb 7, 2021
Software Design Showcase Projects in Haskell
View haskell_design_showcase_projects.md

Software Design Showcase Projects in Haskell

(WIP)

  • Automatic White-Box Testing with Free Monads | Alexander Granin
    • Description: Article and showcase project about an approach to whitebox testing. Describes the idea of recordable and replayable business scenarios based on the Free Monad approach.
    • Design Approach: [Free Monads]
    • Technologies: [free, aeson]
    • Teaches for: How to make a Free monad based business logic recordable and replayable. How to use the recordings for automatic whitebox testing. How to configure this system to do integration testing.
@graninas
graninas / haskell-records.md
Created Dec 23, 2019 — forked from mtesseract/haskell-records.md
Working around Haskell's namespace problem for records
View haskell-records.md

The Problem

Defining records in Haskell causes accessor functions for the record's fields to be defined. There is no seperate namespace for these accessor functions.

The Goal

Be able to

  • use records in Haskell, which share field names.
  • use lenses for accessing these fields