Initial commit + basic Expr impl
This commit is contained in:
commit
394fab8914
10
.gitignore
vendored
Normal file
10
.gitignore
vendored
Normal file
|
@ -0,0 +1,10 @@
|
|||
/bower_components/
|
||||
/node_modules/
|
||||
/.pulp-cache/
|
||||
/output/
|
||||
/generated-docs/
|
||||
/.psc-package/
|
||||
/.psc*
|
||||
/.purs*
|
||||
/.psa*
|
||||
/.spago
|
108
packages.dhall
Normal file
108
packages.dhall
Normal file
|
@ -0,0 +1,108 @@
|
|||
{-
|
||||
Welcome to your new Dhall package-set!
|
||||
|
||||
Below are instructions for how to edit this file for most use
|
||||
cases, so that you don't need to know Dhall to use it.
|
||||
|
||||
## Use Cases
|
||||
|
||||
Most will want to do one or both of these options:
|
||||
1. Override/Patch a package's dependency
|
||||
2. Add a package not already in the default package set
|
||||
|
||||
This file will continue to work whether you use one or both options.
|
||||
Instructions for each option are explained below.
|
||||
|
||||
### Overriding/Patching a package
|
||||
|
||||
Purpose:
|
||||
- Change a package's dependency to a newer/older release than the
|
||||
default package set's release
|
||||
- Use your own modified version of some dependency that may
|
||||
include new API, changed API, removed API by
|
||||
using your custom git repo of the library rather than
|
||||
the package set's repo
|
||||
|
||||
Syntax:
|
||||
where `entityName` is one of the following:
|
||||
- dependencies
|
||||
- repo
|
||||
- version
|
||||
-------------------------------
|
||||
let upstream = --
|
||||
in upstream
|
||||
with packageName.entityName = "new value"
|
||||
-------------------------------
|
||||
|
||||
Example:
|
||||
-------------------------------
|
||||
let upstream = --
|
||||
in upstream
|
||||
with halogen.version = "master"
|
||||
with halogen.repo = "https://example.com/path/to/git/repo.git"
|
||||
|
||||
with halogen-vdom.version = "v4.0.0"
|
||||
with halogen-vdom.dependencies = [ "extra-dependency" ] # halogen-vdom.dependencies
|
||||
-------------------------------
|
||||
|
||||
### Additions
|
||||
|
||||
Purpose:
|
||||
- Add packages that aren't already included in the default package set
|
||||
|
||||
Syntax:
|
||||
where `<version>` is:
|
||||
- a tag (i.e. "v4.0.0")
|
||||
- a branch (i.e. "master")
|
||||
- commit hash (i.e. "701f3e44aafb1a6459281714858fadf2c4c2a977")
|
||||
-------------------------------
|
||||
let upstream = --
|
||||
in upstream
|
||||
with new-package-name =
|
||||
{ dependencies =
|
||||
[ "dependency1"
|
||||
, "dependency2"
|
||||
]
|
||||
, repo =
|
||||
"https://example.com/path/to/git/repo.git"
|
||||
, version =
|
||||
"<version>"
|
||||
}
|
||||
-------------------------------
|
||||
|
||||
Example:
|
||||
-------------------------------
|
||||
let upstream = --
|
||||
in upstream
|
||||
with benchotron =
|
||||
{ dependencies =
|
||||
[ "arrays"
|
||||
, "exists"
|
||||
, "profunctor"
|
||||
, "strings"
|
||||
, "quickcheck"
|
||||
, "lcg"
|
||||
, "transformers"
|
||||
, "foldable-traversable"
|
||||
, "exceptions"
|
||||
, "node-fs"
|
||||
, "node-buffer"
|
||||
, "node-readline"
|
||||
, "datetime"
|
||||
, "now"
|
||||
]
|
||||
, repo =
|
||||
"https://github.com/hdgarrood/purescript-benchotron.git"
|
||||
, version =
|
||||
"v7.0.0"
|
||||
}
|
||||
-------------------------------
|
||||
-}
|
||||
let upstream =
|
||||
https://github.com/purescript/package-sets/releases/download/psc-0.15.2-20220706/packages.dhall
|
||||
sha256:7a24ebdbacb2bfa27b2fc6ce3da96f048093d64e54369965a2a7b5d9892b6031
|
||||
|
||||
in upstream
|
||||
with logict.repo = "https://dev.danilafe.com/Everything-I-Know-About-Types/logict.git"
|
||||
with logict.version = "24298710fa940bfcf2d272bc6d5c7417f2bfccfe"
|
||||
with logict.dependencies = [ "control", "lists", "maybe", "prelude", "transformers", "tuples" ]
|
17
spago.dhall
Normal file
17
spago.dhall
Normal file
|
@ -0,0 +1,17 @@
|
|||
{-
|
||||
Welcome to a Spago project!
|
||||
You can edit this file as you like.
|
||||
|
||||
Need help? See the following resources:
|
||||
- Spago documentation: https://github.com/purescript/spago
|
||||
- Dhall language tour: https://docs.dhall-lang.org/tutorials/Language-Tour.html
|
||||
|
||||
When creating a new Spago project, you can use
|
||||
`spago init --no-comments` or `spago init -C`
|
||||
to generate this file without the comments in this block.
|
||||
-}
|
||||
{ name = "bergamot"
|
||||
, dependencies = [ "foldable-traversable", "lists", "logict", "prelude" ]
|
||||
, packages = ./packages.dhall
|
||||
, sources = [ "src/**/*.purs", "test/**/*.purs" ]
|
||||
}
|
31
src/Language/Bergamot/Syntax.purs
Normal file
31
src/Language/Bergamot/Syntax.purs
Normal file
|
@ -0,0 +1,31 @@
|
|||
module Language.Bergamot.Syntax where
|
||||
|
||||
import Data.List (List)
|
||||
import Data.Functor (class Functor, (<$>))
|
||||
import Data.Eq (class Eq)
|
||||
import Data.Traversable (class Traversable, sequence)
|
||||
import Data.Foldable (class Foldable, foldr, foldl, foldMap)
|
||||
import Data.Monoid ((<>), mempty)
|
||||
|
||||
data Expr v
|
||||
= Var v
|
||||
| Atom String (List (Expr v))
|
||||
|
||||
derive instance Eq v => Eq (Expr v)
|
||||
derive instance Functor Expr
|
||||
|
||||
instance Foldable Expr where
|
||||
foldr f b (Var x) = f x b
|
||||
foldr f b (Atom _ xs) = foldr (\x b' -> foldr f b' x) b xs
|
||||
|
||||
foldl f b (Var x) = f b x
|
||||
foldl f b (Atom _ xs) = foldl (foldl f) b xs
|
||||
|
||||
foldMap f (Var x) = f x
|
||||
foldMap f (Atom _ xs) = foldl (<>) mempty (foldMap f <$> xs)
|
||||
|
||||
instance Traversable Expr where
|
||||
sequence (Var f) = Var <$> f
|
||||
sequence (Atom name fs) = Atom name <$> sequence (sequence <$> fs)
|
||||
|
||||
traverse f e = sequence (f <$> e)
|
6
src/Main.purs
Normal file
6
src/Main.purs
Normal file
|
@ -0,0 +1,6 @@
|
|||
module Main where
|
||||
|
||||
import Prelude
|
||||
|
||||
main :: Unit
|
||||
main = unit
|
6
test/Main.purs
Normal file
6
test/Main.purs
Normal file
|
@ -0,0 +1,6 @@
|
|||
module Test.Main where
|
||||
|
||||
import Prelude
|
||||
|
||||
main :: Unit
|
||||
main = unit
|
Loading…
Reference in New Issue
Block a user