swarm/swarm.cabal

965 lines
24 KiB
Plaintext
Raw Normal View History

cabal-version: 3.8
name: swarm
version: 0.5.0.0
synopsis: 2D resource gathering game with programmable robots
description:
Swarm is a 2D programming and resource gathering
game. Program your robots to explore the world and
collect resources, which in turn allows you to
build upgraded robots that can run more
interesting and complex programs. See the
<https://github.com/swarm-game/swarm/blob/main/README.md README>
for more information and instructions on how to
play or contribute!
== Module organization
For developers getting oriented, Swarm's modules are organized into
sublibraries. Roughly in order from inner to outer, they are:
* swarm-util: miscellaneous utilities
* swarm-lang: parsing, typechecking, etc. for the Swarm language
* swarm-scenario: scenario descriptions, parsing, & processing
* swarm-engine: game simulation
* swarm-doc: generating documentation
* swarm-tui: textual user interface
* swarm-web: web interface
* swarm: the swarm executable
<<docs/image/sublibrary-graph.svg>>
See the [Swarm module guide](https://github.com/swarm-game/swarm/wiki/Module-guide)
for a more in-depth guide to the codebase.
license: BSD-3-Clause
license-file: LICENSE
author: Brent Yorgey
maintainer: byorgey@gmail.com
bug-reports: https://github.com/swarm-game/swarm/issues
copyright: Brent Yorgey 2021
category: Game
tested-with: ghc ==9.2.8 || ==9.4.8 || ==9.6.5 || ==9.8.2
extra-source-files:
CHANGELOG.md
editors/emacs/*.el
editors/vim/*.lua
editors/vim/*.vim
editors/vscode/syntaxes/*.json
example/*.sw
extra-doc-files: docs/image/sublibrary-graph.svg
data-dir: data/
data-files:
*.txt
*.yaml
scenarios/**/*.sw
scenarios/**/*.txt
scenarios/**/*.yaml
test/language-snippets/**/*.sw
worlds/*.world
2021-08-22 02:18:07 +03:00
2021-08-27 05:05:46 +03:00
source-repository head
type: git
location: git://github.com/swarm-game/swarm.git
2021-08-27 05:05:46 +03:00
flag ci
description: Make warnings error
default: False
manual: True
common common
if flag(ci)
ghc-options: -Werror
ghc-options:
-Wall
-Wcompat
-Widentities
-Wincomplete-uni-patterns
-Wincomplete-record-updates
-Wno-star-is-type
-Wpartial-fields
default-language: Haskell2010
2021-09-04 17:20:42 +03:00
common stan-config
ghc-options:
-fwrite-ide-info
-hiedir=.hie
2021-09-04 17:20:42 +03:00
-- Harmless extensions from GHC2021
common ghc2021-extensions
ghc-options:
-Wprepositive-qualified-module
-Wunused-packages
default-extensions:
-- Note we warn on prequalified
-- Not GHC2021, but until we get \cases we use \case a lot
BangPatterns
DeriveAnyClass
DeriveDataTypeable
DeriveFunctor
DeriveGeneric
DeriveTraversable
ExplicitForAll
FlexibleContexts
FlexibleInstances
GADTSyntax
ImportQualifiedPost
LambdaCase
MultiParamTypeClasses
NumericUnderscores
RankNTypes
ScopedTypeVariables
StandaloneDeriving
TupleSections
TypeApplications
TypeOperators
library swarm-lang
import: stan-config, common, ghc2021-extensions
visibility: public
-- cabal-gild: discover src/swarm-lang
exposed-modules:
Swarm.Effect.Unify
Swarm.Effect.Unify.Common
Swarm.Effect.Unify.Fast
Swarm.Effect.Unify.Naive
Swarm.Language.Capability
Swarm.Language.Context
Swarm.Language.Elaborate
Insert parsed comments back into the AST and pretty-print with comments (#1845) This PR does three main things: 1. Insert parsed comments into the AST 2. Extend pretty-printing to include comments 3. Extend the `format` subcommand with a few additional options and move the code to `Swarm.Language.Format`. The pretty-printed code-with-comments is OK but not great. It does a reasonable job with comments in standard-ish places; for example, it turns ``` // This function increments a number def incr : int -> int = \n. n + 1 end /* This command does some stuff. It is super cool and important. */ def stuff : cmd unit = move; move; move; // the third move is important move; end ``` into ``` // This function increments a number def incr: int -> int = \n. n + 1 end; /* This command does some stuff. It is super cool and important. */ def stuff: cmd unit = move; move; move // the third move is important ; move end ``` which is good other than the fact that it moves the inline comment after `move;` to before the semicolon. However, it turns this: ``` // This function does a cool math thing def foo : int -> int = // This is an optional type signature // pre \n. n + 1 // add one end /* This is a block comment which spans multiple lines */ def bar : int -> int // Another type signature, = on the next line = \x. foo /* very important to use foo here */ (foo x) // very cool implementation end def baz : cmd unit = move; move; turn left; // don't forget to turn left! move end // And one last thing ``` into this: ``` // This function does a cool math thing def foo: int -> int = \n. n + 1 // add one end // This is an optional type signature ; /* This is a block comment which spans multiple lines */ def bar: int -> int = \x. foo /* very important to use foo here */ ( foo x // very cool implementation ) end // Another type signature, = on the next line ``` which has several obvious problems. I think I know what the problem is in most cases; it will just require more engineering and special cases to get the output to look nicer, but I honestly don't really want to spend more time on this right now. I'm hoping we can merge this as is (since it is still better than the status quo, namely, deleting all comments) and continue to improve it in the future. The important point is that I ran the code formatter on every single `.sw` file in the repository and then re-ran the test suite; all the tests passed. So at least `swarm format` does not seem to break anything even if the output does not look the best. Closes #1467 .
2024-05-14 14:32:03 +03:00
Swarm.Language.Format
Swarm.Language.Key
Swarm.Language.Kindcheck
Swarm.Language.LSP
Swarm.Language.LSP.Hover
Swarm.Language.LSP.VarUsage
Swarm.Language.Module
Swarm.Language.Parser
Insert parsed comments back into the AST and pretty-print with comments (#1845) This PR does three main things: 1. Insert parsed comments into the AST 2. Extend pretty-printing to include comments 3. Extend the `format` subcommand with a few additional options and move the code to `Swarm.Language.Format`. The pretty-printed code-with-comments is OK but not great. It does a reasonable job with comments in standard-ish places; for example, it turns ``` // This function increments a number def incr : int -> int = \n. n + 1 end /* This command does some stuff. It is super cool and important. */ def stuff : cmd unit = move; move; move; // the third move is important move; end ``` into ``` // This function increments a number def incr: int -> int = \n. n + 1 end; /* This command does some stuff. It is super cool and important. */ def stuff: cmd unit = move; move; move // the third move is important ; move end ``` which is good other than the fact that it moves the inline comment after `move;` to before the semicolon. However, it turns this: ``` // This function does a cool math thing def foo : int -> int = // This is an optional type signature // pre \n. n + 1 // add one end /* This is a block comment which spans multiple lines */ def bar : int -> int // Another type signature, = on the next line = \x. foo /* very important to use foo here */ (foo x) // very cool implementation end def baz : cmd unit = move; move; turn left; // don't forget to turn left! move end // And one last thing ``` into this: ``` // This function does a cool math thing def foo: int -> int = \n. n + 1 // add one end // This is an optional type signature ; /* This is a block comment which spans multiple lines */ def bar: int -> int = \x. foo /* very important to use foo here */ ( foo x // very cool implementation ) end // Another type signature, = on the next line ``` which has several obvious problems. I think I know what the problem is in most cases; it will just require more engineering and special cases to get the output to look nicer, but I honestly don't really want to spend more time on this right now. I'm hoping we can merge this as is (since it is still better than the status quo, namely, deleting all comments) and continue to improve it in the future. The important point is that I ran the code formatter on every single `.sw` file in the repository and then re-ran the test suite; all the tests passed. So at least `swarm format` does not seem to break anything even if the output does not look the best. Closes #1467 .
2024-05-14 14:32:03 +03:00
Swarm.Language.Parser.Comment
Swarm.Language.Parser.Core
Swarm.Language.Parser.Lex
Swarm.Language.Parser.QQ
Swarm.Language.Parser.Record
Swarm.Language.Parser.Term
Swarm.Language.Parser.Type
Swarm.Language.Parser.Util
Swarm.Language.Pipeline
Swarm.Language.Pipeline.QQ
Swarm.Language.Pretty
Swarm.Language.Requirement
Swarm.Language.Syntax
Split syntax module to reduce compilation time (#1852) Hello, Splitting `Swarm.Language.Syntax` into submodules reduces the compilation time quite a bit. Currently, it takes the most of time out of all the modules. Here's a chart: ![CleanShot 2024-05-17 at 17 09 38@2x](https://github.com/swarm-game/swarm/assets/15181803/fc2672ea-4032-4140-93e7-16d9d4aaea69) That's ~20s for simplifier (with overall compilation time of 4.3 mins) Just taking out the types and functions related to `Constants` and putting them in a separate module results in: ![CleanShot 2024-05-17 at 17 11 45@2x](https://github.com/swarm-game/swarm/assets/15181803/ac4c57e9-af46-4861-b305-8540c1b01bab) Thats ~8.5 seconds for simplifier (with overall compilation time of 3.9 mins) Just for added info, timings taken on a 2019 macbook with i7 processor (6 core and 32 GB RAM) Changes include: - `Swarm.Language.Syntax` split into the following modules: - `Swarm.Language.Syntax.Comments` - Types for working with comments. - `Swarm.Language.Syntax.Type` - Core types (`Syntax'`, `Term'` and `DelayType`) - `Swarm.Language.Syntax.Pattern` - Pattern synonyms for untyped terms - `Swarm.Language.Syntax.Loc` - Types for working with location in source code (`SrcLoc` and related types) - `Swarm.Language.Syntax.Util` - Helper functions (Eg: `mkTuple`, `freeVarsS` etc) Compilation chart after the split: ![CleanShot 2024-05-18 at 15 20 17@2x](https://github.com/swarm-game/swarm/assets/15181803/b6a138dd-c0a3-416f-a620-2d82cb418c7d) `Swarm.Language.Syntax` is no longer the most time taking module. Closes #1844
2024-05-18 15:57:37 +03:00
Swarm.Language.Syntax.AST
Swarm.Language.Syntax.CommandMetadata
Split syntax module to reduce compilation time (#1852) Hello, Splitting `Swarm.Language.Syntax` into submodules reduces the compilation time quite a bit. Currently, it takes the most of time out of all the modules. Here's a chart: ![CleanShot 2024-05-17 at 17 09 38@2x](https://github.com/swarm-game/swarm/assets/15181803/fc2672ea-4032-4140-93e7-16d9d4aaea69) That's ~20s for simplifier (with overall compilation time of 4.3 mins) Just taking out the types and functions related to `Constants` and putting them in a separate module results in: ![CleanShot 2024-05-17 at 17 11 45@2x](https://github.com/swarm-game/swarm/assets/15181803/ac4c57e9-af46-4861-b305-8540c1b01bab) Thats ~8.5 seconds for simplifier (with overall compilation time of 3.9 mins) Just for added info, timings taken on a 2019 macbook with i7 processor (6 core and 32 GB RAM) Changes include: - `Swarm.Language.Syntax` split into the following modules: - `Swarm.Language.Syntax.Comments` - Types for working with comments. - `Swarm.Language.Syntax.Type` - Core types (`Syntax'`, `Term'` and `DelayType`) - `Swarm.Language.Syntax.Pattern` - Pattern synonyms for untyped terms - `Swarm.Language.Syntax.Loc` - Types for working with location in source code (`SrcLoc` and related types) - `Swarm.Language.Syntax.Util` - Helper functions (Eg: `mkTuple`, `freeVarsS` etc) Compilation chart after the split: ![CleanShot 2024-05-18 at 15 20 17@2x](https://github.com/swarm-game/swarm/assets/15181803/b6a138dd-c0a3-416f-a620-2d82cb418c7d) `Swarm.Language.Syntax` is no longer the most time taking module. Closes #1844
2024-05-18 15:57:37 +03:00
Swarm.Language.Syntax.Comments
Swarm.Language.Syntax.Constants
Swarm.Language.Syntax.Loc
Swarm.Language.Syntax.Pattern
Swarm.Language.Syntax.Util
Swarm.Language.Text.Markdown
Swarm.Language.Typecheck
Swarm.Language.Typed
Swarm.Language.Types
Swarm.Language.Value
other-modules: Paths_swarm
autogen-modules: Paths_swarm
build-depends:
aeson,
base,
commonmark >=0.2 && <0.3,
commonmark-extensions >=0.2 && <0.3,
containers,
data-fix >=0.3 && <0.4,
deriving-compat >=0.6 && <0.7,
extra,
free >=5.2 && <5.3,
fused-effects,
hashable,
lens,
lsp >=2.4 && <2.7,
megaparsec,
mtl,
parser-combinators,
prettyprinter,
split,
syb >=0.7 && <0.8,
template-haskell,
Insert parsed comments back into the AST and pretty-print with comments (#1845) This PR does three main things: 1. Insert parsed comments into the AST 2. Extend pretty-printing to include comments 3. Extend the `format` subcommand with a few additional options and move the code to `Swarm.Language.Format`. The pretty-printed code-with-comments is OK but not great. It does a reasonable job with comments in standard-ish places; for example, it turns ``` // This function increments a number def incr : int -> int = \n. n + 1 end /* This command does some stuff. It is super cool and important. */ def stuff : cmd unit = move; move; move; // the third move is important move; end ``` into ``` // This function increments a number def incr: int -> int = \n. n + 1 end; /* This command does some stuff. It is super cool and important. */ def stuff: cmd unit = move; move; move // the third move is important ; move end ``` which is good other than the fact that it moves the inline comment after `move;` to before the semicolon. However, it turns this: ``` // This function does a cool math thing def foo : int -> int = // This is an optional type signature // pre \n. n + 1 // add one end /* This is a block comment which spans multiple lines */ def bar : int -> int // Another type signature, = on the next line = \x. foo /* very important to use foo here */ (foo x) // very cool implementation end def baz : cmd unit = move; move; turn left; // don't forget to turn left! move end // And one last thing ``` into this: ``` // This function does a cool math thing def foo: int -> int = \n. n + 1 // add one end // This is an optional type signature ; /* This is a block comment which spans multiple lines */ def bar: int -> int = \x. foo /* very important to use foo here */ ( foo x // very cool implementation ) end // Another type signature, = on the next line ``` which has several obvious problems. I think I know what the problem is in most cases; it will just require more engineering and special cases to get the output to look nicer, but I honestly don't really want to spend more time on this right now. I'm hoping we can merge this as is (since it is still better than the status quo, namely, deleting all comments) and continue to improve it in the future. The important point is that I ran the code formatter on every single `.sw` file in the repository and then re-ran the test suite; all the tests passed. So at least `swarm format` does not seem to break anything even if the output does not look the best. Closes #1467 .
2024-05-14 14:32:03 +03:00
terminal-size >=0.3 && <1.0,
text,
text-rope >=0.2 && <0.3,
vector,
vty,
witch,
yaml,
build-depends: swarm:swarm-util
hs-source-dirs: src/swarm-lang
default-language: Haskell2010
default-extensions:
-- Avoid unexpected unevaluated thunk buildup
-- See discussion in #415
StrictData
topography sublibrary (#1836) Towards #1043. The eventual goal of this sublibrary split is to have a self contained library that can compose 2D grids of arbitrary content (perhaps colored pixels, or boolean values). This could be useful outside of the `swarm` game. I would also like to write unit tests for the structure recognizer that are independent of the `Entity` type. # Major Changes ## Direction module * Moved `Swarm.Language.Syntax.Direction` to `swarm-util`, since both `swarm-lang` and `swarm-topology` depend on it, but not on each other. * Removed the re-export of direction things from `Swarm.Language.Syntax` ## Structure module The `Swarm.Game.Scenario.Topography.Structure` module has been split into two: * `Swarm.Game.Scenario.Topography.Structure` * `Swarm.Game.Scenario.Topography.Structure.Type` The former retains the YAML parsing logic. The latter is agnostic of `Enitiy` type and the palette . At some future point, I might want to move the YAML parsing to this sublibrary while still retaining independence of `Entity` type. ## Structure recognizer The structure recognizer is independent of the content of Cells (i.e. it does not need to know what an `Entity` is), except: 1. during initialization 2. when retrieving the original cell content after recognition Type parameters for three kinds of data have been added to the recognizer: 1. `Cell`/`PCell` 2. `Entity` 3. `EntityName` Eventually it may be possible to eliminate one or two of these type parameters, with some refactoring.
2024-06-02 23:53:34 +03:00
library swarm-topography
import: stan-config, common, ghc2021-extensions
visibility: public
-- cabal-gild: discover src/swarm-topography
exposed-modules:
Swarm.Game.Location
Swarm.Game.Scenario.Topography.Area
Swarm.Game.Scenario.Topography.Navigation.Waypoint
Swarm.Game.Scenario.Topography.Placement
Swarm.Game.Scenario.Topography.Structure.Assembly
Swarm.Game.Scenario.Topography.Structure.Overlay
Swarm.Game.Scenario.Topography.Structure.Recognition
Swarm.Game.Scenario.Topography.Structure.Recognition.Log
Swarm.Game.Scenario.Topography.Structure.Recognition.Registry
Swarm.Game.Scenario.Topography.Structure.Recognition.Symmetry
Swarm.Game.Scenario.Topography.Structure.Recognition.Type
Swarm.Game.Scenario.Topography.Structure.Type
Swarm.Game.Universe
other-modules: Paths_swarm
autogen-modules: Paths_swarm
build-depends:
AhoCorasick >=0.0.4 && <0.0.5,
aeson >=2.2 && <2.3,
base >=4.14 && <4.20,
containers >=0.6.2 && <0.8,
extra >=1.7 && <1.8,
lens,
linear >=1.21.6 && <1.24,
nonempty-containers >=0.3.4 && <0.3.5,
servant-docs >=0.12 && <0.14,
text >=1.2.4 && <2.2,
yaml >=0.11 && <0.11.12.0,
build-depends:
swarm:swarm-util
hs-source-dirs: src/swarm-topography
default-language: Haskell2010
default-extensions:
-- Avoid unexpected unevaluated thunk buildup
-- See discussion in #415
StrictData
library swarm-scenario
import: stan-config, common, ghc2021-extensions
visibility: public
-- cabal-gild: discover src/swarm-scenario
exposed-modules:
Swarm.Constant
Swarm.Game.Achievement.Definitions
Capability exercise cost (#1777) Closes #1684 Closes #1262 # Demo A simple "puzzle" that makes use of consumables: scripts/play.sh -i data/scenarios/Testing/1777-capability-cost.yaml --autoplay Demo of enabled commands and costs display in left pane: scripts/play.sh -i data/scenarios/Testing/1262-display-device-commands.yaml ![Screenshot from 2024-03-01 22-39-12](https://github.com/swarm-game/swarm/assets/261693/03fc0e4f-d219-4aa1-8775-cb5112eb0b90) # In this PR * Supports specifying capabilities both as plain lists and as maps from capabilities to ingredients in YAML * JSON Schema support for both capability specification styles * New integration test * Removed redundant `tshow` implementation from `Swarm.Doc.Util` # Entity lookup approaches The cost of exercising a capability in terms of "ingredients" is specified by the `_entityCapabilities` field within an `Entity` definition. Each ingredient itself is an entity, specified by name. For many purposes, having ingredients just of type `EntityName` is sufficient. But for `Swarm.Game.Recipe.findLacking` in particular, the ingredients list must be actual `Entity` objects, not just names of entities. So at some point the names need to be looked up in the global entity map to be promoted to `Entity` objects. The full list of entities is not available at `Entity` parse time to look up an ingredient entity by name, so we cannot store ingredients lists of type `(Count, Entity)` within a parent `Entity` object. Approaches considered were: * Store a copy of the `entityMap` in `RobotR`, for use by the `equippedDevices` lens * Introduce a type parameter to `Entity` representing a "parse phase" * **Allow a redundant "entity lookup" (and validation) at command execution time** ## Store `entityMap` in `RobotR` One approach explored was to add a field to `RobotR`: ``` , _globalEntityMap :: EntityMap ``` This allowed the `equippedDevices` lens implementation to promote the `EntityName`s to `Entity`s when setting the value of the `_robotCapabilities` field. However, it was rather invasive as it entailed threading the `EntityMap` through many new code paths. ## `Entity` type parameter Currently, `Entity` has a field: ``` _entityCapabilities :: SingleEntityCapabilities EntityName ``` This would entail a huge refactoring, with: ``` data Entity e = Entity ... , _entityCapabilities :: SingleEntityCapabilities e ``` At initial parse time we would obtain a list of `Entity EntityName`, but somewhere later during `Scenario` parse time, we can do another pass to obtain `Entity Entity` objects. This would at least have the advantage of doing the entity lookup/validation on ingredient lists in exactly one place, at parse time. ## Defer `EntityName -> Entity` promotion to command execution time This is what is implemented in this PR. The global set of capability costs is validated at scenario parse time. But it is also redundantly validated in the `payExerciseCost` function, which is not ideal.
2024-04-25 22:39:54 +03:00
Swarm.Game.Device
Swarm.Game.Display
Swarm.Game.Entity
Swarm.Game.Entity.Cosmetic
Swarm.Game.Entity.Cosmetic.Assignment
Swarm.Game.Failure
Capability exercise cost (#1777) Closes #1684 Closes #1262 # Demo A simple "puzzle" that makes use of consumables: scripts/play.sh -i data/scenarios/Testing/1777-capability-cost.yaml --autoplay Demo of enabled commands and costs display in left pane: scripts/play.sh -i data/scenarios/Testing/1262-display-device-commands.yaml ![Screenshot from 2024-03-01 22-39-12](https://github.com/swarm-game/swarm/assets/261693/03fc0e4f-d219-4aa1-8775-cb5112eb0b90) # In this PR * Supports specifying capabilities both as plain lists and as maps from capabilities to ingredients in YAML * JSON Schema support for both capability specification styles * New integration test * Removed redundant `tshow` implementation from `Swarm.Doc.Util` # Entity lookup approaches The cost of exercising a capability in terms of "ingredients" is specified by the `_entityCapabilities` field within an `Entity` definition. Each ingredient itself is an entity, specified by name. For many purposes, having ingredients just of type `EntityName` is sufficient. But for `Swarm.Game.Recipe.findLacking` in particular, the ingredients list must be actual `Entity` objects, not just names of entities. So at some point the names need to be looked up in the global entity map to be promoted to `Entity` objects. The full list of entities is not available at `Entity` parse time to look up an ingredient entity by name, so we cannot store ingredients lists of type `(Count, Entity)` within a parent `Entity` object. Approaches considered were: * Store a copy of the `entityMap` in `RobotR`, for use by the `equippedDevices` lens * Introduce a type parameter to `Entity` representing a "parse phase" * **Allow a redundant "entity lookup" (and validation) at command execution time** ## Store `entityMap` in `RobotR` One approach explored was to add a field to `RobotR`: ``` , _globalEntityMap :: EntityMap ``` This allowed the `equippedDevices` lens implementation to promote the `EntityName`s to `Entity`s when setting the value of the `_robotCapabilities` field. However, it was rather invasive as it entailed threading the `EntityMap` through many new code paths. ## `Entity` type parameter Currently, `Entity` has a field: ``` _entityCapabilities :: SingleEntityCapabilities EntityName ``` This would entail a huge refactoring, with: ``` data Entity e = Entity ... , _entityCapabilities :: SingleEntityCapabilities e ``` At initial parse time we would obtain a list of `Entity EntityName`, but somewhere later during `Scenario` parse time, we can do another pass to obtain `Entity Entity` objects. This would at least have the advantage of doing the entity lookup/validation on ingredient lists in exactly one place, at parse time. ## Defer `EntityName -> Entity` promotion to command execution time This is what is implemented in this PR. The global set of capability costs is validated at scenario parse time. But it is also redundantly validated in the `payExerciseCost` function, which is not ideal.
2024-04-25 22:39:54 +03:00
Swarm.Game.Ingredients
Swarm.Game.Land
Swarm.Game.Recipe
Swarm.Game.ResourceLoading
Swarm.Game.Robot
Swarm.Game.Robot.Walk
Swarm.Game.Scenario
Swarm.Game.Scenario.Objective
Swarm.Game.Scenario.Objective.Graph
Swarm.Game.Scenario.Objective.Logic
Swarm.Game.Scenario.Objective.Validation
Swarm.Game.Scenario.RobotLookup
Swarm.Game.Scenario.Style
Swarm.Game.Scenario.Topography.Cell
Swarm.Game.Scenario.Topography.Center
Swarm.Game.Scenario.Topography.EntityFacade
Swarm.Game.Scenario.Topography.Navigation.Portal
Swarm.Game.Scenario.Topography.Structure
Swarm.Game.Scenario.Topography.Structure.Recognition.Precompute
Swarm.Game.Scenario.Topography.WorldDescription
Swarm.Game.Scenario.Topography.WorldPalette
Swarm.Game.State.Config
Swarm.Game.State.Landscape
Swarm.Game.Terrain
Swarm.Game.World
Swarm.Game.World.Abstract
Swarm.Game.World.Compile
Swarm.Game.World.Coords
Swarm.Game.World.Eval
Swarm.Game.World.Gen
Swarm.Game.World.Interpret
Swarm.Game.World.Load
Swarm.Game.World.Modify
Swarm.Game.World.Parse
Swarm.Game.World.Render
Swarm.Game.World.Syntax
Swarm.Game.World.Typecheck
Swarm.Util.Content
other-modules: Paths_swarm
autogen-modules: Paths_swarm
build-depends:
AhoCorasick >=0.0.4 && <0.0.5,
JuicyPixels >=3.3 && <3.4,
aeson >=2.2 && <2.3,
array >=0.5.4 && <0.6,
base >=4.14 && <4.20,
boolexpr >=0.2 && <0.3,
bytestring >=0.10 && <0.13,
clock >=0.8.2 && <0.9,
colour >=2.3.6 && <2.4,
containers >=0.6.2 && <0.8,
directory >=1.3 && <1.4,
either >=5.0 && <5.1,
extra >=1.7 && <1.8,
filepath >=1.4 && <1.5,
fused-effects >=1.1.1.1 && <1.2,
hashable >=1.3.4 && <1.5,
hsnoise >=0.0.3 && <0.1,
lens >=4.19 && <5.4,
linear >=1.21.6 && <1.24,
megaparsec >=9.6.1 && <9.7,
murmur3 >=1.0.4 && <1.1,
palette >=0.3 && <0.4,
parser-combinators >=1.2 && <1.4,
prettyprinter >=1.7.0 && <1.8,
random >=1.2.0 && <1.3,
servant-docs >=0.12 && <0.14,
simple-enumeration >=0.2 && <0.3,
tagged >=0.8 && <0.9,
text >=1.2.4 && <2.2,
vector >=0.12 && <0.14,
vty >=6.1 && <6.3,
witch >=1.1.1.0 && <1.3,
yaml >=0.11 && <0.11.12.0,
build-depends:
swarm:swarm-lang,
topography sublibrary (#1836) Towards #1043. The eventual goal of this sublibrary split is to have a self contained library that can compose 2D grids of arbitrary content (perhaps colored pixels, or boolean values). This could be useful outside of the `swarm` game. I would also like to write unit tests for the structure recognizer that are independent of the `Entity` type. # Major Changes ## Direction module * Moved `Swarm.Language.Syntax.Direction` to `swarm-util`, since both `swarm-lang` and `swarm-topology` depend on it, but not on each other. * Removed the re-export of direction things from `Swarm.Language.Syntax` ## Structure module The `Swarm.Game.Scenario.Topography.Structure` module has been split into two: * `Swarm.Game.Scenario.Topography.Structure` * `Swarm.Game.Scenario.Topography.Structure.Type` The former retains the YAML parsing logic. The latter is agnostic of `Enitiy` type and the palette . At some future point, I might want to move the YAML parsing to this sublibrary while still retaining independence of `Entity` type. ## Structure recognizer The structure recognizer is independent of the content of Cells (i.e. it does not need to know what an `Entity` is), except: 1. during initialization 2. when retrieving the original cell content after recognition Type parameters for three kinds of data have been added to the recognizer: 1. `Cell`/`PCell` 2. `Entity` 3. `EntityName` Eventually it may be possible to eliminate one or two of these type parameters, with some refactoring.
2024-06-02 23:53:34 +03:00
swarm:swarm-topography,
swarm:swarm-util,
hs-source-dirs: src/swarm-scenario
default-language: Haskell2010
default-extensions:
-- Avoid unexpected unevaluated thunk buildup
-- See discussion in #415
StrictData
library swarm-engine
import: stan-config, common, ghc2021-extensions
visibility: public
-- cabal-gild: discover src/swarm-engine
exposed-modules:
Swarm.Effect
Swarm.Effect.Time
Swarm.Game.Achievement.Attainment
Swarm.Game.Achievement.Description
Swarm.Game.Achievement.Persistence
Swarm.Game.CESK
Swarm.Game.Exception
Swarm.Game.Robot.Activity
Swarm.Game.Robot.Concrete
Swarm.Game.Robot.Context
Swarm.Game.Scenario.Objective.WinCheck
Swarm.Game.Scenario.Scoring.Best
Swarm.Game.Scenario.Scoring.CodeSize
Swarm.Game.Scenario.Scoring.ConcreteMetrics
Swarm.Game.Scenario.Scoring.GenericMetrics
Swarm.Game.Scenario.Status
Swarm.Game.Scenario.Topography.Navigation.Util
Swarm.Game.Scenario.Topography.Structure.Recognition.Tracking
Swarm.Game.ScenarioInfo
Swarm.Game.State
Swarm.Game.State.Robot
Swarm.Game.State.Runtime
Swarm.Game.State.Substate
Swarm.Game.Step
Swarm.Game.Step.Arithmetic
Swarm.Game.Step.Combustion
Swarm.Game.Step.Const
Swarm.Game.Step.Flood
Swarm.Game.Step.Path.Cache
Swarm.Game.Step.Path.Cache.DistanceLimit
Swarm.Game.Step.Path.Finding
Swarm.Game.Step.Path.Type
Swarm.Game.Step.Path.Walkability
Swarm.Game.Step.RobotStepState
Swarm.Game.Step.Util
Swarm.Game.Step.Util.Command
Swarm.Game.Step.Util.Inspect
Swarm.Game.Step.Validate
Swarm.Game.Tick
Swarm.Game.Value
Swarm.Log
Swarm.Version
other-modules: Paths_swarm
autogen-modules: Paths_swarm
build-depends:
AhoCorasick >=0.0.4 && <0.0.5,
SHA >=1.6.4 && <1.6.5,
aeson >=2.2 && <2.3,
array >=0.5.4 && <0.6,
astar >=0.3 && <0.3.1,
base >=4.14 && <4.20,
boolexpr >=0.2 && <0.3,
bytestring,
clock >=0.8.2 && <0.9,
containers >=0.6.2 && <0.8,
directory >=1.3 && <1.4,
extra >=1.7 && <1.8,
filepath >=1.4 && <1.5,
fused-effects >=1.1.1.1 && <1.2,
fused-effects-lens >=1.2.0.1 && <1.3,
githash,
hashable >=1.3.4 && <1.5,
http-client >=0.7 && <0.8,
http-client-tls >=0.3 && <0.4,
http-types >=0.12 && <0.13,
lens >=4.19 && <5.4,
linear >=1.21.6 && <1.24,
megaparsec >=9.6 && <9.7,
mtl >=2.2.2 && <2.4,
nonempty-containers >=0.3.4 && <0.3.5,
prettyprinter >=1.7.0 && <1.8,
random >=1.2.0 && <1.3,
servant-docs >=0.12 && <0.14,
text >=1.2.4 && <2.2,
time >=1.9 && <1.15,
transformers >=0.5 && <0.7,
transformers >=0.5.6.2 && <0.6.2.0,
unordered-containers >=0.2.14 && <0.3,
warp,
witch >=1.1.1.0 && <1.3,
yaml >=0.11 && <0.11.12.0,
build-depends:
swarm:swarm-lang,
swarm:swarm-scenario,
topography sublibrary (#1836) Towards #1043. The eventual goal of this sublibrary split is to have a self contained library that can compose 2D grids of arbitrary content (perhaps colored pixels, or boolean values). This could be useful outside of the `swarm` game. I would also like to write unit tests for the structure recognizer that are independent of the `Entity` type. # Major Changes ## Direction module * Moved `Swarm.Language.Syntax.Direction` to `swarm-util`, since both `swarm-lang` and `swarm-topology` depend on it, but not on each other. * Removed the re-export of direction things from `Swarm.Language.Syntax` ## Structure module The `Swarm.Game.Scenario.Topography.Structure` module has been split into two: * `Swarm.Game.Scenario.Topography.Structure` * `Swarm.Game.Scenario.Topography.Structure.Type` The former retains the YAML parsing logic. The latter is agnostic of `Enitiy` type and the palette . At some future point, I might want to move the YAML parsing to this sublibrary while still retaining independence of `Entity` type. ## Structure recognizer The structure recognizer is independent of the content of Cells (i.e. it does not need to know what an `Entity` is), except: 1. during initialization 2. when retrieving the original cell content after recognition Type parameters for three kinds of data have been added to the recognizer: 1. `Cell`/`PCell` 2. `Entity` 3. `EntityName` Eventually it may be possible to eliminate one or two of these type parameters, with some refactoring.
2024-06-02 23:53:34 +03:00
swarm:swarm-topography,
swarm:swarm-util,
hs-source-dirs: src/swarm-engine
default-language: Haskell2010
default-extensions:
-- Avoid unexpected unevaluated thunk buildup
-- See discussion in #415
StrictData
library swarm-web
import: stan-config, common, ghc2021-extensions
visibility: public
-- cabal-gild: discover src/swarm-web
exposed-modules:
Swarm.Web
Swarm.Web.Worldview
other-modules: Paths_swarm
autogen-modules: Paths_swarm
build-depends:
aeson,
base,
brick,
bytestring,
colour,
commonmark,
containers,
http-types,
lens,
nonempty-containers,
palette,
servant-docs,
servant-server >=0.19 && <0.21,
text,
wai >=3.2 && <3.3,
wai-app-static >=3.1.8 && <3.2,
warp,
witch,
build-depends:
swarm:swarm-doc,
swarm:swarm-engine,
swarm:swarm-lang,
swarm:swarm-scenario,
topography sublibrary (#1836) Towards #1043. The eventual goal of this sublibrary split is to have a self contained library that can compose 2D grids of arbitrary content (perhaps colored pixels, or boolean values). This could be useful outside of the `swarm` game. I would also like to write unit tests for the structure recognizer that are independent of the `Entity` type. # Major Changes ## Direction module * Moved `Swarm.Language.Syntax.Direction` to `swarm-util`, since both `swarm-lang` and `swarm-topology` depend on it, but not on each other. * Removed the re-export of direction things from `Swarm.Language.Syntax` ## Structure module The `Swarm.Game.Scenario.Topography.Structure` module has been split into two: * `Swarm.Game.Scenario.Topography.Structure` * `Swarm.Game.Scenario.Topography.Structure.Type` The former retains the YAML parsing logic. The latter is agnostic of `Enitiy` type and the palette . At some future point, I might want to move the YAML parsing to this sublibrary while still retaining independence of `Entity` type. ## Structure recognizer The structure recognizer is independent of the content of Cells (i.e. it does not need to know what an `Entity` is), except: 1. during initialization 2. when retrieving the original cell content after recognition Type parameters for three kinds of data have been added to the recognizer: 1. `Cell`/`PCell` 2. `Entity` 3. `EntityName` Eventually it may be possible to eliminate one or two of these type parameters, with some refactoring.
2024-06-02 23:53:34 +03:00
swarm:swarm-topography,
swarm:swarm-tui,
swarm:swarm-util,
hs-source-dirs: src/swarm-web
default-language: Haskell2010
default-extensions:
-- Avoid unexpected unevaluated thunk buildup
-- See discussion in #415
StrictData
2024-04-25 23:11:11 +03:00
library swarm-tournament
import: stan-config, common, ghc2021-extensions
visibility: public
-- cabal-gild: discover src/swarm-tournament
exposed-modules:
Swarm.Web.Auth
2024-04-25 23:11:11 +03:00
Swarm.Web.Tournament
Swarm.Web.Tournament.Database.Query
Swarm.Web.Tournament.Type
Swarm.Web.Tournament.Validate
Swarm.Web.Tournament.Validate.FailureMode
Swarm.Web.Tournament.Validate.Upload
other-modules: Paths_swarm
autogen-modules: Paths_swarm
build-depends:
SHA,
aeson,
base,
bytestring,
commonmark,
containers,
cookie,
exceptions,
2024-04-25 23:11:11 +03:00
extra,
fused-effects,
http-client,
http-client-tls >=0.3.6.3 && <0.3.7,
2024-04-25 23:11:11 +03:00
http-types,
lens,
mtl,
servant-docs,
servant-multipart,
servant-server >=0.19 && <0.21,
sqlite-simple >=0.4.19.0 && <0.4.20,
2024-04-25 23:11:11 +03:00
text,
time,
transformers,
utf8-string,
2024-04-25 23:11:11 +03:00
wai >=3.2 && <3.3,
wai-app-static >=3.1.8 && <3.2,
2024-04-25 23:11:11 +03:00
wai-extra,
warp,
yaml,
build-depends:
swarm:swarm-engine,
swarm:swarm-lang,
swarm:swarm-scenario,
swarm:swarm-util,
hs-source-dirs: src/swarm-tournament
default-language: Haskell2010
library swarm-util
import: stan-config, common, ghc2021-extensions
visibility: public
-- cabal-gild: discover src/swarm-util
exposed-modules:
Control.Carrier.Accum.FixedStrict
Data.BoolExpr.Simplify
topography sublibrary (#1836) Towards #1043. The eventual goal of this sublibrary split is to have a self contained library that can compose 2D grids of arbitrary content (perhaps colored pixels, or boolean values). This could be useful outside of the `swarm` game. I would also like to write unit tests for the structure recognizer that are independent of the `Entity` type. # Major Changes ## Direction module * Moved `Swarm.Language.Syntax.Direction` to `swarm-util`, since both `swarm-lang` and `swarm-topology` depend on it, but not on each other. * Removed the re-export of direction things from `Swarm.Language.Syntax` ## Structure module The `Swarm.Game.Scenario.Topography.Structure` module has been split into two: * `Swarm.Game.Scenario.Topography.Structure` * `Swarm.Game.Scenario.Topography.Structure.Type` The former retains the YAML parsing logic. The latter is agnostic of `Enitiy` type and the palette . At some future point, I might want to move the YAML parsing to this sublibrary while still retaining independence of `Entity` type. ## Structure recognizer The structure recognizer is independent of the content of Cells (i.e. it does not need to know what an `Entity` is), except: 1. during initialization 2. when retrieving the original cell content after recognition Type parameters for three kinds of data have been added to the recognizer: 1. `Cell`/`PCell` 2. `Entity` 3. `EntityName` Eventually it may be possible to eliminate one or two of these type parameters, with some refactoring.
2024-06-02 23:53:34 +03:00
Swarm.Language.Syntax.Direction
Swarm.Util
Swarm.Util.Effect
Swarm.Util.Erasable
Swarm.Util.JSON
Swarm.Util.Lens
Swarm.Util.OccurrenceEncoder
Swarm.Util.ReadableIORef
Swarm.Util.RingBuffer
Swarm.Util.UnitInterval
Swarm.Util.WindowedCounter
Swarm.Util.Yaml
other-modules: Paths_swarm
autogen-modules: Paths_swarm
build-depends:
aeson >=2.2 && <2.3,
base >=4.14 && <4.20,
boolexpr >=0.2 && <0.3,
clock >=0.8.2 && <0.9,
containers >=0.6.2 && <0.8,
directory >=1.3 && <1.4,
either >=5.0 && <5.1,
extra >=1.7 && <1.8,
filepath >=1.4 && <1.5,
fused-effects >=1.1.1.1 && <1.2,
topography sublibrary (#1836) Towards #1043. The eventual goal of this sublibrary split is to have a self contained library that can compose 2D grids of arbitrary content (perhaps colored pixels, or boolean values). This could be useful outside of the `swarm` game. I would also like to write unit tests for the structure recognizer that are independent of the `Entity` type. # Major Changes ## Direction module * Moved `Swarm.Language.Syntax.Direction` to `swarm-util`, since both `swarm-lang` and `swarm-topology` depend on it, but not on each other. * Removed the re-export of direction things from `Swarm.Language.Syntax` ## Structure module The `Swarm.Game.Scenario.Topography.Structure` module has been split into two: * `Swarm.Game.Scenario.Topography.Structure` * `Swarm.Game.Scenario.Topography.Structure.Type` The former retains the YAML parsing logic. The latter is agnostic of `Enitiy` type and the palette . At some future point, I might want to move the YAML parsing to this sublibrary while still retaining independence of `Entity` type. ## Structure recognizer The structure recognizer is independent of the content of Cells (i.e. it does not need to know what an `Entity` is), except: 1. during initialization 2. when retrieving the original cell content after recognition Type parameters for three kinds of data have been added to the recognizer: 1. `Cell`/`PCell` 2. `Entity` 3. `EntityName` Eventually it may be possible to eliminate one or two of these type parameters, with some refactoring.
2024-06-02 23:53:34 +03:00
hashable >=1.3.4 && <1.5,
lens >=4.19 && <5.4,
minimorph >=0.3 && <0.4,
mtl >=2.2.2 && <2.4,
servant-docs >=0.12 && <0.14,
template-haskell >=2.16 && <2.22,
text >=1.2.4 && <2.2,
transformers >=0.5 && <0.7,
vector >=0.12 && <0.14,
witch >=1.1.1.0 && <1.3,
witherable >=0.4 && <0.5,
yaml >=0.11 && <0.11.12.0,
hs-source-dirs: src/swarm-util
default-language: Haskell2010
default-extensions:
-- Avoid unexpected unevaluated thunk buildup
-- See discussion in #415
StrictData
library swarm-doc
import: stan-config, common, ghc2021-extensions
visibility: public
-- cabal-gild: discover src/swarm-doc
exposed-modules:
Swarm.Doc.Command
Swarm.Doc.Gen
Swarm.Doc.Keyword
Swarm.Doc.Pedagogy
Swarm.Doc.Schema.Arrangement
Swarm.Doc.Schema.Parse
Swarm.Doc.Schema.Refined
Swarm.Doc.Schema.Render
Swarm.Doc.Schema.SchemaType
Swarm.Doc.Util
Swarm.Doc.Wiki.Cheatsheet
Swarm.Doc.Wiki.Matrix
Swarm.Doc.Wiki.Util
build-depends:
aeson >=2.2 && <2.3,
base >=4.14 && <4.20,
containers >=0.6.2 && <0.8,
directory >=1.3 && <1.4,
dotgen >=0.4 && <0.5,
extra >=1.7 && <1.8,
filepath >=1.4 && <1.5,
fused-effects >=1.1.1.1 && <1.2,
lens >=4.19 && <5.4,
mtl >=2.2.2 && <2.4,
pandoc >=3.0 && <3.2,
pandoc-types >=1.23 && <1.24,
scientific >=0.3.6 && <0.3.8,
servant-docs >=0.12 && <0.14,
text >=1.2.4 && <2.2,
transformers >=0.5 && <0.7,
vector >=0.12 && <0.14,
build-depends:
swarm:swarm-engine,
swarm:swarm-lang,
swarm:swarm-scenario,
swarm:swarm-util,
hs-source-dirs: src/swarm-doc
default-language: Haskell2010
default-extensions:
-- Avoid unexpected unevaluated thunk buildup
-- See discussion in #415
StrictData
library swarm-tui
import: stan-config, common, ghc2021-extensions
visibility: public
-- cabal-gild: discover src/swarm-tui
exposed-modules:
Swarm.TUI.Border
Swarm.TUI.Controller
Swarm.TUI.Controller.Util
Swarm.TUI.Editor.Controller
Swarm.TUI.Editor.Json
Swarm.TUI.Editor.Masking
Swarm.TUI.Editor.Model
Swarm.TUI.Editor.Palette
Swarm.TUI.Editor.Util
Swarm.TUI.Editor.View
Swarm.TUI.Inventory.Sorting
Swarm.TUI.Launch.Controller
Swarm.TUI.Launch.Model
Swarm.TUI.Launch.Prep
Swarm.TUI.Launch.View
Swarm.TUI.List
Swarm.TUI.Model
Swarm.TUI.Model.Goal
Swarm.TUI.Model.Menu
Swarm.TUI.Model.Name
Swarm.TUI.Model.Repl
Swarm.TUI.Model.StateUpdate
Swarm.TUI.Model.Structure
Swarm.TUI.Model.UI
Swarm.TUI.Panel
Swarm.TUI.View
Swarm.TUI.View.Achievement
Swarm.TUI.View.Attribute.Attr
Swarm.TUI.View.Attribute.CustomStyling
Swarm.TUI.View.Attribute.Util
Swarm.TUI.View.CellDisplay
Swarm.TUI.View.Logo
Swarm.TUI.View.Objective
Swarm.TUI.View.Structure
Swarm.TUI.View.Util
other-modules: Paths_swarm
autogen-modules: Paths_swarm
build-depends:
aeson >=2.2 && <2.3,
array >=0.5.4 && <0.6,
base >=4.14 && <4.20,
brick >=2.1.1 && <2.4,
brick-list-skip >=0.1.1.2 && <0.2,
bytestring >=0.10 && <0.13,
clock >=0.8.2 && <0.9,
colour >=2.3.6 && <2.4,
containers >=0.6.2 && <0.8,
extra >=1.7 && <1.8,
filepath >=1.4 && <1.5,
fused-effects >=1.1.1.1 && <1.2,
fuzzy >=0.1 && <0.2,
githash >=0.1.6 && <0.2,
lens >=4.19 && <5.4,
linear >=1.21.6 && <1.24,
mtl >=2.2.2 && <2.4,
murmur3 >=1.0.4 && <1.1,
natural-sort >=0.1.2 && <0.2,
nonempty-containers >=0.3.4 && <0.3.5,
palette >=0.3 && <0.4,
servant-docs >=0.12 && <0.14,
split >=0.2.3 && <0.3,
tagged >=0.8 && <0.9,
text >=1.2.4 && <2.2,
text-zipper >=0.10 && <0.14,
time >=1.9 && <1.15,
transformers >=0.5 && <0.7,
transformers >=0.5.6.2 && <0.6.2.0,
vector >=0.12 && <0.14,
vty >=6.1 && <6.3,
warp >=3.2 && <3.5,
witch >=1.1.1.0 && <1.3,
word-wrap >=0.5 && <0.6,
yaml >=0.11 && <0.11.12.0,
build-depends:
swarm:swarm-engine,
swarm:swarm-lang,
swarm:swarm-scenario,
topography sublibrary (#1836) Towards #1043. The eventual goal of this sublibrary split is to have a self contained library that can compose 2D grids of arbitrary content (perhaps colored pixels, or boolean values). This could be useful outside of the `swarm` game. I would also like to write unit tests for the structure recognizer that are independent of the `Entity` type. # Major Changes ## Direction module * Moved `Swarm.Language.Syntax.Direction` to `swarm-util`, since both `swarm-lang` and `swarm-topology` depend on it, but not on each other. * Removed the re-export of direction things from `Swarm.Language.Syntax` ## Structure module The `Swarm.Game.Scenario.Topography.Structure` module has been split into two: * `Swarm.Game.Scenario.Topography.Structure` * `Swarm.Game.Scenario.Topography.Structure.Type` The former retains the YAML parsing logic. The latter is agnostic of `Enitiy` type and the palette . At some future point, I might want to move the YAML parsing to this sublibrary while still retaining independence of `Entity` type. ## Structure recognizer The structure recognizer is independent of the content of Cells (i.e. it does not need to know what an `Entity` is), except: 1. during initialization 2. when retrieving the original cell content after recognition Type parameters for three kinds of data have been added to the recognizer: 1. `Cell`/`PCell` 2. `Entity` 3. `EntityName` Eventually it may be possible to eliminate one or two of these type parameters, with some refactoring.
2024-06-02 23:53:34 +03:00
swarm:swarm-topography,
swarm:swarm-util,
hs-source-dirs: src/swarm-tui
default-language: Haskell2010
default-extensions:
-- Avoid unexpected unevaluated thunk buildup
-- See discussion in #415
StrictData
2021-08-23 21:31:57 +03:00
2021-08-23 19:47:04 +03:00
executable swarm
import: stan-config, common
main-is: Main.hs
other-modules: Swarm.App
build-depends:
-- Imports shared with the library don't need bounds
base,
2024-03-08 22:15:39 +03:00
blaze-html >=0.9.1 && <0.10,
brick,
fused-effects,
githash >=0.1.6 && <0.2,
lens,
optparse-applicative >=0.16 && <0.19,
prettyprinter,
servant >=0.19 && <0.21,
swarm:swarm-engine,
swarm:swarm-lang,
swarm:swarm-scenario,
swarm:swarm-tui,
swarm:swarm-util,
swarm:swarm-web,
terminal-size >=0.3 && <1.0,
text,
vty,
vty-crossplatform >=0.4 && <0.5,
hs-source-dirs: app
default-language: Haskell2010
ghc-options: -threaded
default-extensions: ImportQualifiedPost
executable swarm-scene
import: stan-config, common, ghc2021-extensions
main-is: Main.hs
build-depends:
base,
optparse-applicative >=0.16 && <0.19,
topography sublibrary (#1836) Towards #1043. The eventual goal of this sublibrary split is to have a self contained library that can compose 2D grids of arbitrary content (perhaps colored pixels, or boolean values). This could be useful outside of the `swarm` game. I would also like to write unit tests for the structure recognizer that are independent of the `Entity` type. # Major Changes ## Direction module * Moved `Swarm.Language.Syntax.Direction` to `swarm-util`, since both `swarm-lang` and `swarm-topology` depend on it, but not on each other. * Removed the re-export of direction things from `Swarm.Language.Syntax` ## Structure module The `Swarm.Game.Scenario.Topography.Structure` module has been split into two: * `Swarm.Game.Scenario.Topography.Structure` * `Swarm.Game.Scenario.Topography.Structure.Type` The former retains the YAML parsing logic. The latter is agnostic of `Enitiy` type and the palette . At some future point, I might want to move the YAML parsing to this sublibrary while still retaining independence of `Entity` type. ## Structure recognizer The structure recognizer is independent of the content of Cells (i.e. it does not need to know what an `Entity` is), except: 1. during initialization 2. when retrieving the original cell content after recognition Type parameters for three kinds of data have been added to the recognizer: 1. `Cell`/`PCell` 2. `Entity` 3. `EntityName` Eventually it may be possible to eliminate one or two of these type parameters, with some refactoring.
2024-06-02 23:53:34 +03:00
build-depends:
swarm:swarm-scenario,
topography sublibrary (#1836) Towards #1043. The eventual goal of this sublibrary split is to have a self contained library that can compose 2D grids of arbitrary content (perhaps colored pixels, or boolean values). This could be useful outside of the `swarm` game. I would also like to write unit tests for the structure recognizer that are independent of the `Entity` type. # Major Changes ## Direction module * Moved `Swarm.Language.Syntax.Direction` to `swarm-util`, since both `swarm-lang` and `swarm-topology` depend on it, but not on each other. * Removed the re-export of direction things from `Swarm.Language.Syntax` ## Structure module The `Swarm.Game.Scenario.Topography.Structure` module has been split into two: * `Swarm.Game.Scenario.Topography.Structure` * `Swarm.Game.Scenario.Topography.Structure.Type` The former retains the YAML parsing logic. The latter is agnostic of `Enitiy` type and the palette . At some future point, I might want to move the YAML parsing to this sublibrary while still retaining independence of `Entity` type. ## Structure recognizer The structure recognizer is independent of the content of Cells (i.e. it does not need to know what an `Entity` is), except: 1. during initialization 2. when retrieving the original cell content after recognition Type parameters for three kinds of data have been added to the recognizer: 1. `Cell`/`PCell` 2. `Entity` 3. `EntityName` Eventually it may be possible to eliminate one or two of these type parameters, with some refactoring.
2024-06-02 23:53:34 +03:00
swarm:swarm-topography,
hs-source-dirs: app/scene
default-language: Haskell2010
ghc-options: -threaded
default-extensions: ImportQualifiedPost
executable swarm-docs
import: stan-config, common, ghc2021-extensions
main-is: Main.hs
other-modules:
build-depends:
-- Imports shared with the library don't need bounds
base,
optparse-applicative >=0.16 && <0.19,
swarm:swarm-doc,
text,
hs-source-dirs: app/doc
default-language: Haskell2010
ghc-options: -threaded
default-extensions: ImportQualifiedPost
2024-04-25 23:11:11 +03:00
executable swarm-host-tournament
import: stan-config, common, ghc2021-extensions
main-is: Main.hs
build-depends:
base,
optparse-applicative >=0.16 && <0.19,
sqlite-simple,
2024-04-25 23:11:11 +03:00
transformers,
warp,
yaml,
2024-04-25 23:11:11 +03:00
build-depends:
swarm:swarm-engine,
swarm:swarm-tournament,
hs-source-dirs: app/tournament
default-language: Haskell2010
ghc-options: -threaded
default-extensions: ImportQualifiedPost
test-suite swarm-unit
import: stan-config, common, ghc2021-extensions
main-is: Main.hs
type: exitcode-stdio-1.0
other-modules:
TestBoolExpr
TestCommand
TestEval
TestInventory
TestLSP
TestLanguagePipeline
TestNotification
TestOrdering
TestOverlay
TestParse
TestPedagogy
TestPretty
TestRecipeCoverage
TestRepl
TestScoring
TestUtil
build-depends:
-- Imports shared with the library don't need bounds
QuickCheck >=2.14 && <2.16,
aeson,
base,
boolexpr,
containers,
filepath,
hashable,
lens,
megaparsec,
mtl,
tasty >=0.10 && <1.6,
tasty-expected-failure >=0.12 && <0.13,
tasty-hunit >=0.10 && <0.11,
tasty-quickcheck >=0.10 && <0.11,
text,
time,
vty,
witch,
build-depends:
swarm:swarm-doc,
swarm:swarm-engine,
swarm:swarm-lang,
swarm:swarm-scenario,
topography sublibrary (#1836) Towards #1043. The eventual goal of this sublibrary split is to have a self contained library that can compose 2D grids of arbitrary content (perhaps colored pixels, or boolean values). This could be useful outside of the `swarm` game. I would also like to write unit tests for the structure recognizer that are independent of the `Entity` type. # Major Changes ## Direction module * Moved `Swarm.Language.Syntax.Direction` to `swarm-util`, since both `swarm-lang` and `swarm-topology` depend on it, but not on each other. * Removed the re-export of direction things from `Swarm.Language.Syntax` ## Structure module The `Swarm.Game.Scenario.Topography.Structure` module has been split into two: * `Swarm.Game.Scenario.Topography.Structure` * `Swarm.Game.Scenario.Topography.Structure.Type` The former retains the YAML parsing logic. The latter is agnostic of `Enitiy` type and the palette . At some future point, I might want to move the YAML parsing to this sublibrary while still retaining independence of `Entity` type. ## Structure recognizer The structure recognizer is independent of the content of Cells (i.e. it does not need to know what an `Entity` is), except: 1. during initialization 2. when retrieving the original cell content after recognition Type parameters for three kinds of data have been added to the recognizer: 1. `Cell`/`PCell` 2. `Entity` 3. `EntityName` Eventually it may be possible to eliminate one or two of these type parameters, with some refactoring.
2024-06-02 23:53:34 +03:00
swarm:swarm-topography,
swarm:swarm-tui,
swarm:swarm-util,
hs-source-dirs: test/unit
default-language: Haskell2010
ghc-options: -threaded
test-suite swarm-integration
import: stan-config, common, ghc2021-extensions
main-is: Main.hs
type: exitcode-stdio-1.0
build-depends:
-- Imports shared with the library don't need bounds
base,
containers,
filepath,
fused-effects,
lens,
mtl,
tasty >=0.10 && <1.6,
tasty-hunit >=0.10 && <0.11,
text,
witch,
yaml,
build-depends:
swarm:swarm-doc,
swarm:swarm-engine,
swarm:swarm-lang,
swarm:swarm-scenario,
swarm:swarm-tui,
swarm:swarm-util,
hs-source-dirs: test/integration
default-language: Haskell2010
ghc-options: -threaded
2024-04-25 23:11:11 +03:00
test-suite tournament-host
import: stan-config, common, ghc2021-extensions
main-is: Main.hs
type: exitcode-stdio-1.0
build-depends:
SHA,
base,
bytestring,
http-client,
http-types,
nonempty-containers,
tasty,
tasty-hunit,
warp,
build-depends:
swarm:swarm-engine,
swarm:swarm-tournament,
hs-source-dirs: test/tournament-host
default-language: Haskell2010
ghc-options: -threaded
benchmark benchmark
import: stan-config, common, ghc2021-extensions
main-is: Benchmark.hs
hs-source-dirs: test/bench
type: exitcode-stdio-1.0
build-depends:
base,
containers,
extra,
lens,
mtl,
topography sublibrary (#1836) Towards #1043. The eventual goal of this sublibrary split is to have a self contained library that can compose 2D grids of arbitrary content (perhaps colored pixels, or boolean values). This could be useful outside of the `swarm` game. I would also like to write unit tests for the structure recognizer that are independent of the `Entity` type. # Major Changes ## Direction module * Moved `Swarm.Language.Syntax.Direction` to `swarm-util`, since both `swarm-lang` and `swarm-topology` depend on it, but not on each other. * Removed the re-export of direction things from `Swarm.Language.Syntax` ## Structure module The `Swarm.Game.Scenario.Topography.Structure` module has been split into two: * `Swarm.Game.Scenario.Topography.Structure` * `Swarm.Game.Scenario.Topography.Structure.Type` The former retains the YAML parsing logic. The latter is agnostic of `Enitiy` type and the palette . At some future point, I might want to move the YAML parsing to this sublibrary while still retaining independence of `Entity` type. ## Structure recognizer The structure recognizer is independent of the content of Cells (i.e. it does not need to know what an `Entity` is), except: 1. during initialization 2. when retrieving the original cell content after recognition Type parameters for three kinds of data have been added to the recognizer: 1. `Cell`/`PCell` 2. `Entity` 3. `EntityName` Eventually it may be possible to eliminate one or two of these type parameters, with some refactoring.
2024-06-02 23:53:34 +03:00
tasty-bench >=0.3.1 && <0.4,
text,
build-depends:
swarm:swarm-engine,
swarm:swarm-lang,
swarm:swarm-scenario,
topography sublibrary (#1836) Towards #1043. The eventual goal of this sublibrary split is to have a self contained library that can compose 2D grids of arbitrary content (perhaps colored pixels, or boolean values). This could be useful outside of the `swarm` game. I would also like to write unit tests for the structure recognizer that are independent of the `Entity` type. # Major Changes ## Direction module * Moved `Swarm.Language.Syntax.Direction` to `swarm-util`, since both `swarm-lang` and `swarm-topology` depend on it, but not on each other. * Removed the re-export of direction things from `Swarm.Language.Syntax` ## Structure module The `Swarm.Game.Scenario.Topography.Structure` module has been split into two: * `Swarm.Game.Scenario.Topography.Structure` * `Swarm.Game.Scenario.Topography.Structure.Type` The former retains the YAML parsing logic. The latter is agnostic of `Enitiy` type and the palette . At some future point, I might want to move the YAML parsing to this sublibrary while still retaining independence of `Entity` type. ## Structure recognizer The structure recognizer is independent of the content of Cells (i.e. it does not need to know what an `Entity` is), except: 1. during initialization 2. when retrieving the original cell content after recognition Type parameters for three kinds of data have been added to the recognizer: 1. `Cell`/`PCell` 2. `Entity` 3. `EntityName` Eventually it may be possible to eliminate one or two of these type parameters, with some refactoring.
2024-06-02 23:53:34 +03:00
swarm:swarm-topography,
swarm:swarm-util,
default-language: Haskell2010
ghc-options:
-threaded
-with-rtsopts=-A32m
-fproc-alignment=64