Skip to content

Commit 30d9559

Browse files
authored
Merge pull request #370 from yamacir-kit/let-syntax
Let syntax
2 parents 80fa93a + c77629e commit 30d9559

28 files changed

+397
-336
lines changed

README.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,9 @@ sudo rm -rf /usr/local/share/meevax
100100

101101
| Target Name | Description
102102
|:-------------------|:--
103-
| `all` (default) | Build shared-library `libmeevax.0.3.791.so` and executable `meevax`.
103+
| `all` (default) | Build shared-library `libmeevax.0.3.818.so` and executable `meevax`.
104104
| `test` | Test executable `meevax`.
105-
| `package` | Generate debian package `meevax_0.3.791_amd64.deb`.
105+
| `package` | Generate debian package `meevax_0.3.818_amd64.deb`.
106106
| `install` | Copy files into `/usr/local` __(1)__.
107107
| `install.deb` | `all` + `package` + `sudo apt install <meevax>.deb`
108108
| `safe-install.deb` | `all` + `test` + `package` + `sudo apt install <meevax>.deb`
@@ -117,7 +117,7 @@ __(1)__ Meevax installed by `make install` cannot be uninstalled by the system's
117117
## Usage
118118

119119
```
120-
Meevax Lisp System, version 0.3.791
120+
Meevax Lisp System, version 0.3.818
121121
122122
Usage: meevax [OPTION...] [FILE...]
123123

VERSION

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.3.791
1+
0.3.818

basis/overture.ss

-9
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,6 @@
99
(lambda (import . import-sets)
1010
(list quote (cons 'import import-sets)))))
1111

12-
(define define-syntax
13-
(fork/csc
14-
(lambda (define-syntax keyword . transformer)
15-
(if (pair? keyword)
16-
(list define (car keyword)
17-
(list fork/csc
18-
(list lambda keyword . transformer)))
19-
(list define keyword . transformer)))))
20-
2112
(define-syntax (syntax datum)
2213
(if (pair? datum)
2314
(list fork/csc (list lambda '() datum))

example/example.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#include <meevax/library/standard.hpp>
1+
#include <meevax/kernel/environment.hpp>
22

33
using namespace meevax; // NOTE: DIRTY HACK
44

include/meevax/iostream/escape_sequence.hpp

+1
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ inline namespace iostream
7171
return escape_sequence(COMMAND, std::forward<decltype(xs)>(xs)...); \
7272
}
7373

74+
DEFINE("0m", normal);
7475
DEFINE("1m", bold);
7576
DEFINE("2m", faint);
7677
DEFINE("3m", italic); // Not widely supported. Sometimes treated as inverse.

include/meevax/kernel/boolean.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ inline namespace kernel
4444
let extern const t;
4545
let extern const f;
4646

47-
auto if_(const_reference x) -> bool;
47+
auto select(const_reference) -> bool;
4848
} // namespace kernel
4949
} // namespace meevax
5050

include/meevax/kernel/configurator.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ inline namespace kernel
293293
#define BOILERPLATE(NAME) \
294294
auto is_##NAME##_mode() const -> bool \
295295
{ \
296-
return if_(NAME); \
296+
return select(NAME); \
297297
} \
298298
static_assert(true)
299299

include/meevax/kernel/environment.hpp

+10-3
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#include <meevax/kernel/machine.hpp>
2222
#include <meevax/kernel/reader.hpp>
2323
#include <meevax/kernel/writer.hpp>
24+
#include <meevax/utility/integer_sequence.hpp>
2425

2526
namespace meevax
2627
{
@@ -46,7 +47,11 @@ inline namespace kernel
4647
using writer::debug_port;
4748
using writer::write;
4849

49-
template <typename... Ts>
50+
explicit environment(environment &&) = default;
51+
52+
explicit environment(environment const&) = default;
53+
54+
template <typename... Ts, REQUIRES(is_integer_sequence<Ts>...)>
5055
explicit environment(Ts&&... xs)
5156
{
5257
import(), (import(xs), ...);
@@ -70,12 +75,14 @@ inline namespace kernel
7075

7176
auto execute() -> object;
7277

78+
auto execute(const_reference) -> object;
79+
7380
auto global() noexcept -> reference;
7481

7582
auto global() const noexcept -> const_reference;
7683

77-
template <typename T>
78-
auto import(T) -> void;
84+
template <typename T, T... xs>
85+
auto import(std::integer_sequence<T, xs...>) -> void;
7986

8087
auto import() -> void;
8188

include/meevax/kernel/instruction.hpp

+2
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@ inline namespace kernel
3232
dummy, // a.k.a DUM
3333
fork, //
3434
join, //
35+
let_syntax, //
3536
letrec, // a.k.a RAP
37+
letrec_syntax, //
3638
load_absolute, // a.k.a LDG
3739
load_closure, // a.k.a LDF
3840
load_constant, // a.k.a LDC

0 commit comments

Comments
 (0)