Skip to content

Commit 9ffd8f1

Browse files
committed
um
1 parent 8d0d0a3 commit 9ffd8f1

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

copy/entries/five-point-haskell-2.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
2-
title: "\"Five Point Haskell\" Part 2: Unconditional Election"
2+
title: "\"Five Point Haskell\" Part 2: Unconditional Election (Parametric Polymorphism)"
33
categories: Haskell
4-
tags: functional programming, type driven development
4+
tags: functional programming, parametric polymorphism
55
create-time: 2026/01/01 21:51:17
66
identifier: five-point-haskell-2
77
slug: five-point-haskell-part-2-unconditional-election
@@ -23,8 +23,9 @@ errors through our types.
2323

2424
[Total Depravity]: https://blog.jle.im/entry/five-point-haskell-part-1-total-depravity.html
2525

26-
However, picking good structures, making invalid states unrepreentable, etc.
27-
can only go so far.
26+
However, picking good structures, making invalid states unrepresentable, etc.
27+
can only go so far. They are, in the end, tools of human designs and human
28+
flaws.
2829

2930
Types aren't just about preventing bad behaviors. They're about designing good
3031
code. And there is one principle that helps guide this design by leveraging the
@@ -42,7 +43,8 @@ Election**!
4243
> polymorphim, but rather in the predestination of universal quantification.
4344
>
4445
> Therefore, surrender to your control to parametric polymorphism in all
45-
> things. In simple terms: add a type parameter.
46+
> things. Embrace one of Haskell's greatest unexpected strengths: the type
47+
> parameter.
4648
4749
<!-- > Unconditional Election: The _structure_ of your types fully determine the -->
4850
<!-- > values and states it will ever take. Nothing at runtime can ever circumvent -->

0 commit comments

Comments
 (0)