1
Fork 0

Rough template on repository structure.

main
Joshua Potter 2022-03-11 08:50:42 -05:00
parent 64c2f3fd0e
commit eca0b9ddc3
4 changed files with 46 additions and 12 deletions

View File

@ -1,4 +1,41 @@
# hello-world # effect-systems
This repository contains collections of code snippets related to my
[Effect Systems](https://jrpotter.github.io/posts/effect-systems/) blog post.
The post is not yet publically available.
> As Ive begun exploring the world of so-called algebraic effect systems, Ive
become increasingly frustrated in the level of documentation around them.
Learning to use them (and moreso, understanding how they work) requires diving
into the internals, watching various videos, and hoping to grok why certain
effects arent being interpreted they way you might have hoped. My goal in this
post is to address this issue, at least to some degree, in a focused,
pedagogical fashion. In particular, Ill aim to build up an intution of the
fused-effects, library, chosen because it seems to have the most active
development, the smallest dependency footprint, and minimal type machinery.
## Building
This repository uses Nix for reproducible builds. First
[install Nix](https://nixos.org/download.html) if you do not currently have it
on your system. Afterward, enable [flakes](https://nixos.wiki/wiki/Flakes) by
adding line
```
experimental-features = nix-command flakes
```
to `$HOME/.config/nix/nix.conf`. You may then use `nix build` and `nix develop`.
To makes things easier, we recommend using [Home Manager](https://github.com/nix-community/home-manager)
to install [direnv](https://github.com/direnv/direnv) and [nix-direnv](https://github.com/nix-community/nix-direnv).
Once you run
```bash
$ direnv allow
```
from the root directory, `nix develop` will be automatically invoked each time
a change is detected in `flake.nix` or you return to the directory.
## Formatting ## Formatting

View File

@ -1,4 +0,0 @@
module Main where
main :: IO ()
main = putStrLn "Hello, World!"

2
cabal.project Normal file
View File

@ -0,0 +1,2 @@
packages:
free-monads

View File

@ -1,8 +1,8 @@
cabal-version: 3.0 cabal-version: 3.0
name: hello-world name: free-monads
version: 0.1.0.0 version: 0.1.0.0
synopsis: The Corner programming language. synopsis: Free monads implementation.
-- A longer description of the package. -- A longer description of the package.
-- description: -- description:
@ -18,7 +18,7 @@
CHANGELOG.md CHANGELOG.md
README.md README.md
common hello-world-common common free-monads-common
default-language: Haskell2010 default-language: Haskell2010
default-extensions: BangPatterns, default-extensions: BangPatterns,
BinaryLiterals, BinaryLiterals,
@ -74,7 +74,6 @@ common hello-world-common
relude relude
ghc-options: -Wall ghc-options: -Wall
executable hello-world library
import: hello-world-common import: free-monads-common
main-is: Main.hs hs-source-dirs: src
hs-source-dirs: app