You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+13-10
Original file line number
Diff line number
Diff line change
@@ -18,25 +18,28 @@ In the first hour, we will do a brief explanation of data-driven APIs, and then
18
18
19
19
## Your Design Task
20
20
21
-
1.Choose one of the problem domains from [this list](./problem-domains.md).
21
+
1.You will be designing a data-driven DSL to solve some problem.
22
22
23
-
We recommend choosing a problem domain that you are at least somewhat familiar with (to better understand how your syntax might be used in practice).
23
+
Choose one of the problems from [this list](./problems.md).
24
24
25
-
If you've thought of other problem domain that you'd like to design a data-driven API for, go ahead!
25
+
We recommend choosing a problem domain that you are at least somewhat familiar with (to better understand how your DSL might be used in practice).
26
26
27
+
If you've thought of some other problem that you'd like to design a data-driven API for, go ahead!
27
28
28
-
2. Design a data-driven DSL for that problem domain.
29
29
30
-
give some examples of how you would use it.
30
+
2. Take a moment to scan through the [list of reflection questions](./evaluating-notations.md) to get an idea of some of the characteristics that you might want to keep in mind while working on your design.
31
31
32
-
see [the template](./template.md)
32
+
3. Now the hard part: design a data-driven Clojure DSL for your chosen problem.
33
33
34
-
The task is *not*to implement the system, it is just to design the data-driven API.
34
+
You don't have to implement the actual library! Just sketch out what the syntax and workflow might be for using the library.
35
35
36
-
You do not have to implement the entire language, just use the existing language as inspiration.
36
+
Many of the suggested problems already have some existing declarative languages (which isn't data-driven), but, many of these languages are quite general and complex (and maybe even turing-complete) -- your design does *not* need to match them 1:1 in features, feel free to focus on a subset of functionality or just use the existing languages as inspiration/"prior art".
37
37
38
-
3. Reflect using [these questions](./evaluating-notations.md)
38
+
We recommend you start your design work by choosing a few specific sample use-cases to design for.
39
39
40
-
4. After you're done with your design(s), if you'd like to have them potentially discussed in Part 2 of the workshop, add a link to [the spreadsheet](https://docs.google.com/spreadsheets/d/1F7TGID104-ayVhOT47RV3fCLHpvAaeOGZScIKdvG9-8/edit?usp=sharing).
40
+
The end goal is to come up with a mock README for your library, featuring an explanation of what it does and examples of how to use it. See [the template](./template.md)
41
41
42
+
3. After you are done your design (or time is running out), take a moment to reflect on your design using [these questions](./evaluating-notations.md). Perhaps add some notes to you README if you find some of these questions make you identify something particularly good or bad about your design.
43
+
44
+
4. If you'd like to have your design potentially discussed in Part 2 of the workshop, push your README to GitHub and add a link to [the spreadsheet](https://docs.google.com/spreadsheets/d/1F7TGID104-ayVhOT47RV3fCLHpvAaeOGZScIKdvG9-8/edit?usp=sharing).
[ Libname ] is a Clojure(script) library for [ some task ].
4
+
5
+
[ Some extra information if you'd like. ]
6
+
7
+
<sup>(Protip: If you're having a hard time coming up with a name for your design, just do what Metosin does: pick the most matter-of-fact word to describe your library, but in Finnish instead of English).</sup>
8
+
9
+
## Quick Start
10
+
11
+
```clojure
12
+
;; one or more examples of how someone would use libname
13
+
;; inputs, outputs, workflow
14
+
;; is it just one function or more?
15
+
```
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
## Limitations / Future Work
24
+
25
+
[ what would you like to have added or changed in your design? ]
26
+
[ any particular challenges? ]
27
+
[ was a data-driven approach suitable for this problem? ]
28
+
[ any of the reflection questions particularly relevant? ]
0 commit comments