aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYann Herklotz <git@yannherklotz.com>2022-03-15 11:26:34 +0000
committerYann Herklotz <git@yannherklotz.com>2022-03-15 11:26:34 +0000
commit77c74349dc7a10563755eda86a4682d14bfcca49 (patch)
tree7976adf337edcde75551acf2e4fb401c4bd66e50
parentcf44e166a956bb7a00f9185291f02c54d213be0f (diff)
downloadchoc-77c74349dc7a10563755eda86a4682d14bfcca49.tar.gz
choc-77c74349dc7a10563755eda86a4682d14bfcca49.zip
Add explicit shell.nix file
-rw-r--r--.envrc1
-rw-r--r--.gitignore2
-rw-r--r--shell.nix8
-rw-r--r--src/Choc/SimplyTyped.hs17
-rw-r--r--stack.yaml66
5 files changed, 17 insertions, 77 deletions
diff --git a/.envrc b/.envrc
new file mode 100644
index 0000000..1d953f4
--- /dev/null
+++ b/.envrc
@@ -0,0 +1 @@
+use nix
diff --git a/.gitignore b/.gitignore
index 6f23a71..4ee2f29 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,5 @@
.stack-work/
*~
*.cabal
+*.lock
+.direnv/
diff --git a/shell.nix b/shell.nix
new file mode 100644
index 0000000..ea3de9b
--- /dev/null
+++ b/shell.nix
@@ -0,0 +1,8 @@
+with (import <nixpkgs> {});
+{ ghc ? haskell.compiler.ghc8107 }:
+
+haskell.lib.buildStackProject {
+ inherit ghc;
+ name = "choc-env";
+ buildInputs = [ pkgs.haskell-language-server ];
+}
diff --git a/src/Choc/SimplyTyped.hs b/src/Choc/SimplyTyped.hs
index 3481ec6..cf67b14 100644
--- a/src/Choc/SimplyTyped.hs
+++ b/src/Choc/SimplyTyped.hs
@@ -76,27 +76,18 @@ evalMay t = eval t <$ check [] t
parseLambda :: Parser Term
parseLambda = parens $ do
_ <- reserved "L"
- t <- parseType
- b <- parseTerm
- return $ Lambda t b
+ Lambda <$> parseType <*> parseTerm
parseApp :: Parser Term
-parseApp = parens $ do
- t1 <- parseTerm
- t2 <- parseTerm
- return $ App t1 t2
+parseApp = parens $ App <$> parseTerm <*> parseTerm
parseVar :: Parser Term
parseVar = Var <$> integer
parseType :: Parser Type
parseType =
- (reserved "B" $> Bass) <|>
- (parens $ do
- _ <- reservedOp "->"
- t1 <- parseType
- t2 <- parseType
- return (Arrow t1 t2))
+ reserved "B" $> Bass <|>
+ parens (reservedOp "->" >> (Arrow <$> parseType <*> parseType))
parseTerm :: Parser Term
parseTerm = try parseLambda <|> parseApp <|> parseVar <|> (reserved "C" $> Const)
diff --git a/stack.yaml b/stack.yaml
index e7a6598..37e8618 100644
--- a/stack.yaml
+++ b/stack.yaml
@@ -1,70 +1,8 @@
-# This file was automatically generated by 'stack init'
-#
-# Some commonly used options have been documented as comments in this file.
-# For advanced use and comprehensive documentation of the format, please see:
-# https://docs.haskellstack.org/en/stable/yaml_configuration/
+resolver: lts-18.28
-# Resolver to choose a 'specific' stackage snapshot or a compiler version.
-# A snapshot resolver dictates the compiler version and the set of packages
-# to be used for project dependencies. For example:
-#
-# resolver: lts-3.5
-# resolver: nightly-2015-09-21
-# resolver: ghc-7.10.2
-#
-# The location of a snapshot can be provided as a file or url. Stack assumes
-# a snapshot provided as a file might change, whereas a url resource does not.
-#
-# resolver: ./custom-snapshot.yaml
-# resolver: https://example.com/snapshots/2018-01-01.yaml
-resolver:
- url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/18/27.yaml
-
-# User packages to be built.
-# Various formats can be used as shown in the example below.
-#
-# packages:
-# - some-directory
-# - https://example.com/foo/bar/baz-0.0.2.tar.gz
-# subdirs:
-# - auto-update
-# - wai
packages:
- .
-# Dependency packages to be pulled from upstream that are not in the resolver.
-# These entries can reference officially published versions as well as
-# forks / in-progress versions pinned to a git hash. For example:
-#
-# extra-deps:
-# - acme-missiles-0.3
-# - git: https://github.com/commercialhaskell/stack.git
-# commit: e7b331f14bcffb8367cd58fbfc8b40ec7642100a
-#
-# extra-deps: []
-
-# Override default flag values for local packages and extra-deps
-# flags: {}
-
-# Extra package databases containing global packages
-# extra-package-dbs: []
-
-# Control whether we use the GHC we find on the path
-# system-ghc: true
-#
-# Require a specific version of stack, using version ranges
-# require-stack-version: -any # Default
-# require-stack-version: ">=2.7"
-#
-# Override the architecture used by stack, especially useful on Windows
-# arch: i386
-# arch: x86_64
-#
-# Extra directories used by stack for building
-# extra-include-dirs: [/path/to/dir]
-# extra-lib-dirs: [/path/to/dir]
-#
-# Allow a newer minor version of GHC than the snapshot specifies
-# compiler-check: newer-minor
nix:
enable: true
+ shell-file: shell.nix