diff options
author | Yann Herklotz <git@yannherklotz.com> | 2022-03-15 11:26:34 +0000 |
---|---|---|
committer | Yann Herklotz <git@yannherklotz.com> | 2022-03-15 11:26:34 +0000 |
commit | 77c74349dc7a10563755eda86a4682d14bfcca49 (patch) | |
tree | 7976adf337edcde75551acf2e4fb401c4bd66e50 | |
parent | cf44e166a956bb7a00f9185291f02c54d213be0f (diff) | |
download | choc-77c74349dc7a10563755eda86a4682d14bfcca49.tar.gz choc-77c74349dc7a10563755eda86a4682d14bfcca49.zip |
Add explicit shell.nix file
-rw-r--r-- | .envrc | 1 | ||||
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | shell.nix | 8 | ||||
-rw-r--r-- | src/Choc/SimplyTyped.hs | 17 | ||||
-rw-r--r-- | stack.yaml | 66 |
5 files changed, 17 insertions, 77 deletions
@@ -0,0 +1 @@ +use nix @@ -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) @@ -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 |