Added small clarification to README
Getty Ritter
9 years ago
1 | 1 | S-Cargot is a library for parsing and emitting S-expressions, designed |
2 | 2 | to be flexible, customizable, and extensible. Different uses of |
3 | 3 | S-expressions often understand subtly different variations on what an |
4 |
S-expression is. The goal of S-Cargot is to create |
|
4 | S-expression is. The goal of S-Cargot is to create several reusable | |
5 | 5 | components that can be repurposed to nearly any S-expression variant. |
6 | 6 | |
7 | 7 | Additionally, S-Cargot uses these to include out-of-the-box parsing and |
9 | 9 | Common Lisp (**in progresss**), Scheme (**in progress**), the |
10 | 10 | [Rivest internet-draft](http://people.csail.mit.edu/rivest/Sexp.txt) |
11 | 11 | (**in progress**), and Clojure (**in progress**). |
12 | ||
13 | S-Cargot does _not_ aim to be the fastest or most efficient | |
14 | s-expression library. If you need speed, then it would probably be | |
15 | best to roll your own [AttoParsec]() parser. | |
16 | Wherever there's a choice, S-Cargot errs on the side of | |
17 | maximum flexibility, which means that it should be easy to | |
18 | plug together components to understand various existing flavors of | |
19 | s-expressions or to extend it in various ways to accomodate new | |
20 | flavors. | |
12 | 21 | |
13 | 22 | The central way of interacting with the S-Cargot library is by creating |
14 | 23 | and modifying a _spec_, which is a value that represents a given |
33 | 42 | |
34 | 43 | There are three built-in representations of S-expression lists: two of them |
35 | 44 | are isomorphic, as one or the other might be better for processing |
36 | S-expression data, and the third represents only a subset of possible | |
37 | S-expressions. | |
45 | S-expression data in a particular circumstance, and the third represents | |
46 | only a subset of possible S-expressions. | |
38 | 47 | |
39 | 48 | ~~~~.haskell |
40 | 49 | -- cons-based representation |