|
1 | 1 | # Stellogen |
2 | 2 |
|
3 | 3 | **Note: this project is an experimental proof of concept, not a fully |
4 | | -designed and specified programming language.** |
| 4 | +designed or specified programming language. It is better understood as a |
| 5 | +research project or an esoteric language.** |
5 | 6 |
|
6 | 7 | Stellogen is a *logic-agnostic* programming language based on term unification. |
7 | 8 | It has been designed from concepts of Girard's transcendental syntax. |
8 | 9 |
|
9 | 10 | ## Key characteristics |
10 | 11 |
|
11 | | -- dynamically/statically **typed** but without primitive type nor type systems, |
| 12 | +- dynamically/statically **typed** but without primitive types nor type systems, |
12 | 13 | by using very flexible assert-like expressions defining *sets of tests* to pass; |
13 | | -- everything is based on **term unification**; |
| 14 | +- everything is based on **term unification**. |
14 | 15 |
|
15 | 16 | It is multi-paradigm: |
16 | | -- _logic programs_ are the elementary bricks of computation and typing; |
| 17 | +- _logic programs_ called "constellations" are the elementary bricks of |
| 18 | +computation and typing; |
17 | 19 | - _functional programs_ correspond to logic programs enforcing an order of |
18 | 20 | interaction; |
19 | | -- _imperative programs_ are iterative recipes constructing logic programs; |
20 | | -- _objects_ are ways to structure logic programs. |
| 21 | +- _imperative programs_ are iterative recipes constructing constellations; |
| 22 | +- _objects_ are ways to structure constellations. |
21 | 23 |
|
22 | 24 | ## Influences |
23 | 25 |
|
24 | 26 | It draws (or try to draw) inspiration from: |
25 | | -- Prolog/Datalog (for unification-based computation); |
| 27 | +- Prolog/Datalog (for unification-based computation and constraint solving); |
26 | 28 | - Smalltalk (for message-passing, object-oriented paradigm and minimalism); |
27 | 29 | - Coq (for proof-as-program paradigm and iterative programming with tactics); |
28 | 30 | - Scheme/Racket (for minimalism and metaprogramming); |
29 | | -- Haskell/Ruby/Lua (for syntax). |
| 31 | +- Haskell/Ruby/Lua (for syntax); |
| 32 | +- Shen (for its optional type systems). |
30 | 33 |
|
31 | 34 | ## Syntax samples |
32 | 35 |
|
@@ -62,18 +65,18 @@ a1 = galaxy |
62 | 65 | -a(0:W q1) +a(W q2). |
63 | 66 | end |
64 | 67 |
|
65 | | -show process #e. #a1. #kill. end |
66 | | -show process #000. #a1. #kill. end |
67 | | -show process #010. #a1. #kill. end |
68 | | -show process #110. #a1. #kill. end |
| 68 | +show process #e. #a1. %kill. end |
| 69 | +show process #000. #a1. %kill. end |
| 70 | +show process #010. #a1. %kill. end |
| 71 | +show process #110. #a1. %kill. end |
69 | 72 | ``` |
70 | 73 |
|
71 | 74 | More examples can be found in `examples/`. |
72 | 75 |
|
73 | 76 | ## Learn |
74 | 77 |
|
75 | | -This project is still in development, hence the syntax and features are still |
76 | | -changing frequently. |
| 78 | +This project is still in (chaotic) development, hence the syntax and features |
| 79 | +are still changing frequently. |
77 | 80 |
|
78 | 81 | To learn more about the current implementation of stellogen: |
79 | 82 | - French guide (official): https://tsguide.refl.fr/ |
|
0 commit comments