diff --git a/README.md b/README.md
index 8772244..510dbaf 100644
--- a/README.md
+++ b/README.md
@@ -63,6 +63,7 @@ See [Examples](examples.md) for a list of `actions/cache` implementations for us
 - [C# - Nuget](./examples.md#c---nuget)
 - [Elixir - Mix](./examples.md#elixir---mix)
 - [Go - Modules](./examples.md#go---modules)
+- [Haskell - Cabal](./examples.md#haskell---cabal)
 - [Java - Gradle](./examples.md#java---gradle)
 - [Java - Maven](./examples.md#java---maven)
 - [Node - npm](./examples.md#node---npm)
diff --git a/examples.md b/examples.md
index 948179c..6b16320 100644
--- a/examples.md
+++ b/examples.md
@@ -3,6 +3,7 @@
 - [C# - NuGet](#c---nuget)
 - [Elixir - Mix](#elixir---mix)
 - [Go - Modules](#go---modules)
+- [Haskell - Cabal](#haskell---cabal)
 - [Java - Gradle](#java---gradle)
 - [Java - Maven](#java---maven)
 - [Node - npm](#node---npm)
@@ -62,6 +63,28 @@ steps:
       ${{ runner.os }}-go-
 ```
 
+## Haskell - Cabal
+
+We cache the elements of the Cabal store separately, as the entirety of `~/.cabal` can grow very large for projects with many dependencies.
+
+```yaml
+- uses: actions/cache@v1
+  name: Cache ~/.cabal/packages
+  with:
+    path: ~/.cabal/packages
+    key: ${{ runner.os }}-${{ matrix.ghc }}-cabal-packages
+- uses: actions/cache@v1
+  name: Cache ~/.cabal/store
+  with:
+    path: ~/.cabal/store
+    key: ${{ runner.os }}-${{ matrix.ghc }}-cabal-store
+- uses: actions/cache@v1
+  name: Cache dist-newstyle
+  with:
+    path: dist-newstyle
+    key: ${{ runner.os }}-${{ matrix.ghc }}-dist-newstyle
+```
+
 ## Java - Gradle
 
 ```yaml