TODO: description
TODO
TODO
Note that these are all installed during setup.
purescriptspagoparcel
To get an instance of shape-lang-purs built from scratch, do the following:
git clone https://github.com/Riib11/shape-lang-purs.git
cd shape-lang-purs
npm install
npm run build
npm run build ; npm run bundle ; npm run serve
Build the purescript spago project via:
npm run build
To use sourcemaps, first set the environment variable
export NODE_OPTIONS=--enable-source-maps
or whatever windows uses for environment variable syntax.
Serve the app via parcel using:
npm run serve
(For testing changes)
- Set
module_to the correcttest*inLanguage.Shape.Stlc.Initial. For example,test1. npm run buildnpm run serve- Open the webapp. Perform the changes you want until a bug or whatever else
- In the console, copy the log that appears directly after "===[ changeHistory ]===" logging header. You now have the
ChangeHistory, as a string, that results in the current state. - In
Test.ChangeHistory, add a new element to the array definingchangeHistories. The format is<label> /\ <initial module> /\ <change history>. So, pick a<label>, and use the sameInitial.test*that you specified in step 1. For the<change history>paste the text you copied in step 5. - In
Test.Main, change themainfunction has a lineChangeHistory.runChangeHistory $ Map.lookup' <label> ChangeHistory.changeHistories. Change the<label>> to the one you specified in step 6. 7.5. For stacktraces: On windows, type $Env:NODE_OPTIONS = "--enable-source-maps". On unix, type... 7.6. Also for stacktraces: Runnpm run build - Run
npm run testin the terminal. This should output some logging information corresponding to running your change history. - Add loggers to
Test.ChangeHistory.runChangeHistoryif you want to print out special information in your test.
To deploy the GitHub pages powered web-app, run the following commands:
git fetch
git pull
npm install
npm run deploy
git add ./docs/
git commit -m"deploy"
git pushThe following are some projects that have some relevant overlaping goals with Shape:
- Hazel
- a type-sensitive structural editor built on gradual typing
- Alfa
- Meta Programming System (MPS)
- a framework for defining DSLs and automatically generating a UI
- user study: https://dl.acm.org/doi/pdf/10.1145/2950290.2950315
- Lambdu
- Scratch
- UI design for a structural editor
- aimed at teaching programming
- awesome-structure-editors
- collection of structure editors
- Tylr
- the first tile-based editor
- Holbert
- mathematical notation