3
3
<br />
4
4
<img src =" https://github.com/yamacir-kit/meevax/wiki/svg/description.png " alt =" A programmable programming lanugage. " />
5
5
</p >
6
- <hr color = #c1ab05 / >
6
+ <hr />
7
7
<p align =" center " >
8
8
<img src =" https://github.com/yamacir-kit/meevax/actions/workflows/build.yaml/badge.svg " />
9
9
<img src =" https://github.com/yamacir-kit/meevax/actions/workflows/release.yaml/badge.svg " />
10
10
</p >
11
11
<p align =" center " >
12
- <b ><a href =" #Overview " >Overview</a ></b >   ; |  ;
13
- <b ><a href =" #Requirements " >Requirements</a ></b >   ; |  ;
14
- <b ><a href =" #Installation " >Installation</a ></b >   ; |  ;
15
- <b ><a href =" #Usage " >Usage</a ></b >   ; |  ;
16
- <b ><a href =" #License " >License</a ></b >   ; |  ;
17
- <b ><a href =" #References " >References</a ></b >
12
+ <b >
13
+ <a href="#Overview">Overview</a>
14
+ </b >
15
+   ; |  ;
16
+ <b >
17
+ <a href="#Installation">Installation</a>
18
+ </b >
19
+   ; |  ;
20
+ <b >
21
+ <a href="#Usage">Usage</a>
22
+ </b >
23
+   ; |  ;
24
+ <b >
25
+ <a href="#License">License</a>
26
+ </b >
27
+   ; |  ;
28
+ <b >
29
+ <a href="#References">References</a>
30
+ </b >
18
31
</p >
19
32
20
33
## Overview
21
34
22
35
> Programming languages should be designed not by piling feature on top of feature, but by removing the weaknesses and restrictions that make additional features appear necessary.
23
- > <div align =" right " >
24
- > Revised<sup >7</sup > Report on the Algorithmic Language Scheme [ 1]
25
- > </div >
36
+ > <div align =" right " >Revised<sup >7</sup > Report on the Algorithmic Language Scheme [1]</div >
26
37
27
38
Meevax is an implementation of Lisp-1 programming language, supporting subset of the [ Scheme] ( http://www.scheme-reports.org/ ) (R7RS) and [ SRFI] ( https://srfi.schemers.org/ ) s.
28
39
@@ -45,76 +56,81 @@ Subset of R7RS-small.
45
56
| --------------------------------------------------------:| :-------------------------------------------------------| :------------------------------------------------------| :------------------|
46
57
| [ 1] ( https://srfi.schemers.org/srfi-1/srfi-1.html ) | List Library | [ ` (srfi 1) ` ] ( ./basis/srfi-1.ss ) | |
47
58
| [ 6] ( https://srfi.schemers.org/srfi-6/srfi-6.html ) | Basic String Ports | [ ` (srfi 6) ` ] ( ./basis/srfi-6.ss ) | R7RS 6.13 |
59
+ | [ 4] ( https://srfi.schemers.org/srfi-4/srfi-4.html ) | Homogeneous numeric vector datatypes | [ ` (srfi 4) ` ] ( ./basis/srfi-4.ss ) | R7RS 6.9 |
48
60
| [ 8] ( https://srfi.schemers.org/srfi-8/srfi-8.html ) | receive: Binding to multiple values | [ ` (srfi 8) ` ] ( ./basis/srfi-8.ss ) | |
49
61
| [ 9] ( https://srfi.schemers.org/srfi-9/srfi-9.html ) | Defining Record Types | [ ` (srfi 9) ` ] ( ./basis/srfi-9.ss ) | R7RS 5.5 |
50
62
| [ 10] ( https://srfi.schemers.org/srfi-10/srfi-10.html ) | #, external form | | |
51
63
| [ 11] ( https://srfi.schemers.org/srfi-11/srfi-11.html ) | Syntax for receiving multiple values | [ ` (srfi 11) ` ] ( ./basis/srfi-11.ss ) | R7RS 4.2.2 |
52
64
| [ 23] ( https://srfi.schemers.org/srfi-23/srfi-23.html ) | Error reporting mechanism | [ ` (srfi 23) ` ] ( ./basis/srfi-23.ss ) | R7RS 6.11 |
53
65
| [ 30] ( https://srfi.schemers.org/srfi-30/srfi-30.html ) | Nested Multi-line Comments | | R7RS 2.2 |
66
+ | [ 31] ( https://srfi.schemers.org/srfi-31/srfi-31.html ) | A special form rec for recursive evaluation | [ ` (srfi 31) ` ] ( ./basis/srfi-31.ss ) | |
54
67
| [ 34] ( https://srfi.schemers.org/srfi-34/srfi-34.html ) | Exception Handling for Programs | [ ` (srfi 34) ` ] ( ./basis/srfi-34.ss ) | R7RS 6.11 |
55
68
| [ 38] ( https://srfi.schemers.org/srfi-38/srfi-38.html ) | External Representation for Data With Shared Structure | [ ` (srfi 38) ` ] ( ./basis/srfi-38.ss ) | R7RS 6.13.3 |
56
69
| [ 39] ( https://srfi.schemers.org/srfi-39/srfi-39.html ) | Parameter objects | [ ` (srfi 39) ` ] ( ./basis/srfi-39.ss ) | R7RS 4.2.6 |
57
70
| [ 45] ( https://srfi.schemers.org/srfi-45/srfi-45.html ) | Primitives for Expressing Iterative Lazy Algorithms | [ ` (srfi 45) ` ] ( ./basis/srfi-45.ss ) | R7RS 4.2.5 |
58
71
| [ 62] ( https://srfi.schemers.org/srfi-62/srfi-62.html ) | S-expression comments | | R7RS 2.2 |
59
72
| [ 78] ( https://srfi.schemers.org/srfi-78/srfi-78.html ) | Lightweight testing | [ ` (srfi 78) ` ] ( ./basis/srfi-78.ss ) | Except ` check-ec ` |
60
73
| [ 87] ( https://srfi.schemers.org/srfi-87/srfi-87.html ) | => in case clauses | | R7RS 4.2.1 |
74
+ | [ 98] ( https://srfi.schemers.org/srfi-98/srfi-98.html ) | An interface to access environment variables | [ ` (srfi 98) ` ] ( ./basis/srfi-98.ss ) | R7RS 6.14 |
61
75
| [ 149] ( https://srfi.schemers.org/srfi-149/srfi-149.html ) | Basic syntax-rules template extensions | [ ` (srfi 149) ` ] ( ./basis/srfi-149.ss ) | R7RS 4.3.2 |
62
- | [ 211] ( https://srfi.schemers.org/srfi-211/srfi-211.html ) | Scheme Macro Libraries | [ ` (srfi 211 explicit-renaming) ` ] ( ./basis/srfi-211.ss ) | |
63
76
64
- ## Requirements
77
+ ## Installation
65
78
66
- ### Software
79
+ ### Requirements
67
80
68
81
- [ GCC] ( https://gcc.gnu.org/ ) (>= 9.4.0) or [ Clang] ( https://clang.llvm.org/ ) (>= 11.0.0)
69
82
- [ CMake] ( https://cmake.org/ ) (>= 3.16.3)
70
83
- [ GNU Make] ( http://savannah.gnu.org/projects/make )
71
84
- [ GNU Binutils] ( https://www.gnu.org/software/binutils/ )
72
85
- [ GNU Multiple Precision Arithmetic Library (GMP)] ( https://gmplib.org/ )
73
86
74
- To install the above software, it is easy to use the following script.
87
+ ### Install
75
88
76
89
``` bash
77
- $ ./script/setup.sh
90
+ cmake -B build -DCMAKE_BUILD_TYPE=Release
91
+ cd build
92
+ make install.deb
78
93
```
79
94
80
- ## Installation
81
-
82
- ### Install
95
+ or
83
96
84
97
``` bash
85
- $ cmake -B build -DCMAKE_BUILD_TYPE=Release
86
- $ cd build
87
- $ make install.deb
98
+ cmake -B build -DCMAKE_BUILD_TYPE=Release
99
+ cd build
100
+ make install
88
101
```
89
102
90
103
### Uninstall
91
104
105
+ If you installed with ` make install.deb ` ,
106
+
92
107
``` bash
93
- $ sudo apt remove meevax
108
+ sudo apt remove meevax
109
+ ```
110
+
111
+ or if you installed with ` make install ` ,
112
+
113
+ ``` bash
114
+ sudo rm -rf /usr/local/bin/meevax
115
+ sudo rm -rf /usr/local/include/meevax
116
+ sudo rm -rf /usr/local/lib/libmeevax*
117
+ sudo rm -rf /usr/local/share/meevax
94
118
```
95
119
96
120
### CMake targets
97
121
98
122
| Target Name | Description
99
123
|--------------------|---
100
- | ` all ` (default) | Build shared-library ` libmeevax.0.4.597 .so ` and executable ` meevax ` .
101
- | ` test ` | Test executable ` meevax ` .
102
- | ` package ` | Generate debian package ` meevax_0.4.597_amd64 .deb ` .
103
- | ` install ` | Copy files into ` /usr/local ` __ (1) __ .
124
+ | ` all ` (default) | Build shared-library ` libmeevax.0.4.653 .so ` and executable ` meevax `
125
+ | ` test ` | Test executable ` meevax `
126
+ | ` package ` | Generate debian package ` meevax_0.4.653_amd64 .deb `
127
+ | ` install ` | Copy files into ` /usr/local `
104
128
| ` install.deb ` | ` all ` + ` package ` + ` sudo apt install <meevax>.deb `
105
- | ` safe-install.deb ` | ` all ` + ` test ` + ` package ` + ` sudo apt install <meevax>.deb `
106
-
107
- __ (1)__ Meevax installed by ` make install ` cannot be uninstalled by the system's package manager (for example, ` apt remove meevax ` ). You need to manually delete the following files to uninstall:
108
-
109
- - ` /usr/local/bin/meevax `
110
- - ` /usr/local/include/meevax `
111
- - ` /usr/local/lib/libmeevax* `
112
- - ` /usr/local/share/meevax `
113
129
114
130
## Usage
115
131
116
132
```
117
- Meevax Lisp 0.4.597
133
+ Meevax Lisp 0.4.653
118
134
119
135
Usage:
120
136
meevax [option...] [file...]
@@ -129,13 +145,6 @@ Options:
129
145
130
146
```
131
147
132
- | Example | Effects |
133
- | :-------------------------------------------| :--|
134
- | ` $ meevax -i ` | Start interactive session. You can exit the session by input ` (exit) ` or Ctrl+C or Ctrl+D.
135
- | ` $ meevax foo.ss ` | Evaluate a script ` foo.ss ` . |
136
- | ` $ meevax -e '(+ 1 2 3)' ` | Display ` 6 ` .
137
- | ` $ meevax -e "(define home \"$HOME\")" -i ` | Define value of shell-environment variable ` $HOME ` as string typed Scheme variable ` home ` , and then start interactive session on environment includes the variable ` home ` .
138
-
139
148
## License
140
149
141
150
See [ LICENSE] ( ./LICENSE ) .
@@ -146,5 +155,6 @@ See [LICENSE](./LICENSE).
146
155
147
156
### Resources
148
157
149
- * [ TinyScheme ] ( http ://tinyscheme.sourceforge.net/ )
158
+ * [ Chibi-Scheme ] ( https ://github.com/ashinn/chibi-scheme )
150
159
* [ SECDR-Scheme] ( http://www.maroon.dti.ne.jp/nagar17/mulasame/ )
160
+ * [ TinyScheme] ( http://tinyscheme.sourceforge.net/ )
0 commit comments