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-13Lines changed: 13 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,17 +6,17 @@ Gluon is a small, statically-typed, functional programming language designed for
6
6
7
7
## Features
8
8
9
-
***Staticallytyped** - Static typing makes it easier to write safe and efficient interfaces between gluon and the host application.
9
+
***Statically-typed** - Static typing makes it easier to write safe and efficient interfaces between gluon and the host application.
10
10
11
11
***Type inference** - Type inference ensures that types rarely have to be written explicitly giving all the benefits of static types with none of the typing.
12
12
13
13
***Simple embedding** - Marshalling values to and from gluon requires next to no boilerplate, allowing functions defined in [Rust][] to be [directly passed to gluon][easy_embed].
14
14
15
-
***UTF-8 by default** - Gluon supports unicode out of the box with utf-8 encoded strings and unicode codepoints as characters.
15
+
***UTF-8 by default** - Gluon supports Unicode out of the box with utf-8 encoded strings and Unicode codepoints as characters.
16
16
17
17
***Separate heaps** - Gluon is a garbage-collected language but uses a separate heap for each executing gluon thread. This keeps each heap small, reducing the overhead of the garbage collector.
18
18
19
-
***Threadsafe** - Gluon is written in Rust, which guarantees thread safety. Gluon keeps the same guarantees, allowing multiple gluon programs to run in parallel ([example][parallel])\*
19
+
***Thread-safe** - Gluon is written in Rust, which guarantees thread safety. Gluon keeps the same guarantees, allowing multiple gluon programs to run in parallel ([example][parallel])\*
// * Only the following operators/functions are allowed: multiplication, division, addition, subtraction
61
61
// * Division should use floating point or rational arithmetic, etc, to preserve remainders.
62
62
// * Brackets are allowed, if using an infix expression evaluator.
63
-
// * Forming multiple digit numbers from the supplied digits is disallowed. (So an answer of 12+12 when given 1, 2, 2, and 1 is wrong).
64
-
// * The order of the digits when given does not have to be preserved.
63
+
// * Forming multiple digit numbers from the supplied digits is disallowed. (So an answer of 12+12 - when given 1, 2, 2, and 1 - is wrong).
64
+
// * The order of the digits, when given, does not have to be preserved.
65
65
//
66
66
//
67
67
// ## Notes
68
68
//
69
69
// The type of expression evaluator used is not mandated. An RPN evaluator is equally acceptable for example.
70
-
// The task is not for the program to generate the expression, or test whether an expression is even possible.
70
+
// The task is not for the program to generate the expression or test whether an expression is even possible.
71
71
72
72
73
-
// The `import!` macro are used to load and refer to other modules.
73
+
// The `import!` macro is used to load and refer to other modules.
74
74
// It gets replaced by the value returned by evaluating that module (cached of course, so that
75
75
// multiple `import!`s to the same module only evaluates the module once)
76
76
let io @ { ? } = import! std.io
@@ -83,7 +83,7 @@ let list @ { List, ? } = import! std.list
83
83
let random = import! std.random
84
84
let string = import! std.string
85
85
86
-
// Since imports in gluon returns regular values we can load specific parts of a module using pattern matches.
86
+
// Since imports in gluon return regular values we can load specific parts of a module using pattern matches.
87
87
let char @ { ? } = import! std.char
88
88
89
89
let { (<>) } = import! std.semigroup
@@ -228,7 +228,7 @@ cargo install gluon_repl
228
228
229
229
### REPL
230
230
231
-
Gluon has a small executable which can be used to run gluon programs directly or in a small REPL. The REPL can be started by passing the `-i` flag to the built repl executable which can be run with `cargo run -p gluon_repl -- -i`.
231
+
Gluon has a small executable that can be used to run gluon programs directly or in a small REPL. The REPL can be started by passing the `-i` flag to the built repl executable which can be run with `cargo run -p gluon_repl -- -i`.
232
232
233
233
REPL features:
234
234
* Evaluating expressions (expressions of type IO will be evaluated in the IO context).
@@ -307,7 +307,7 @@ gluon = "0.17.2"
307
307
```
308
308
309
309
### Other languages
310
-
Currently the easiest way to interact with the gluon virtual machine is through Rust but a rudimentary [C api][] exists which will be extended in the future to bring it closer to the Rust api.
310
+
Currently, the easiest way to interact with the gluon virtual machine is through Rust but a rudimentary [C api][] exists which will be extended in the future to bring it closer to the Rust API.
@@ -321,15 +321,15 @@ There are many ways to contribute to gluon. The two simplest ways are opening is
321
321
## Goals
322
322
These goals may change or be refined over time as I experiment with what is possible with the language.
323
323
324
-
***Embeddable** - Similiar to [Lua][Lua] - it is meant to be included in another program which may use the virtual machine to extend its own functionality.
324
+
***Embeddable** - Similiar to [Lua][Lua] - it is meant to be included in another program that may use the virtual machine to extend its own functionality.
325
325
326
326
***Statically typed** - The language uses a [Hindley-Milner based type system][hm] with some extensions, allowing simple and general type inference.
327
327
328
328
***Tiny** - By being tiny, the language is easy to learn and has a small implementation footprint.
329
329
330
-
***Strict** - Strict languages are usually easier to reason about, especially considering that it is what most people are accustomed to. For cases where laziness is desired, an explict type is provided.
330
+
***Strict** - Strict languages are usually easier to reason about, especially considering that it is what most people are accustomed to. For cases where laziness is desired, an explicit type is provided.
331
331
332
-
***Modular** - The library is split into its parser, typechecker, and virtual machine + compiler. Each of these components can be used independently of each other, allowing applications to pick and choose exactly what they need.
332
+
***Modular** - The library is split into its parser, type checker, and virtual machine + compiler. Each of these components can be used independently of each other, allowing applications to pick and choose exactly what they need.
0 commit comments