-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathTODO.TXT
executable file
·99 lines (68 loc) · 2.53 KB
/
TODO.TXT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
TODO.TXT
(c) 2001-2023 Guglielmo Nigri <guglielmonigri at yahoo.it>.
Gleam comes with ABSOLUTELY NO WARRANTY. This is free software, and you are
welcome to redistribute it under certain conditions; see LICENSE.TXT.
TO DO:
------
String-based I/O ports
Binary files
"readline" in the REPL: use Jline?
Save typed expressions in the REPL:
(save-history "name") also (history) similar to bash
Move away from Java serialization -> Json? XML? S-expressions?
Rework serialization for I/O ports (use append write for output files, etc.)
A rewriting system for patterns (...)
rewriter? type function
Macros for do and other syntax
getArity() for Procedure and subclasses
Arguments to functions as an array or an ArrayList?
A better parser!
GleamException
new "context" parameter to constructor,
subclasses?
ArgumentIterator, with param. number checking
A compiler!
(UNSURE) refactor ArgumentList into two classes: EvaluatedArguments and
UnevaluatedArguments, so that special forms and rewriters use the latter (with a
different implementation that does not have to convert args from Java lists to
Scheme lists)
(UNSURE) refactor continuations and the "return null" convention.
--------------------------------------------------------------------------------
PARTLY DONE:
------------
ListIterator
Move analyzeSpecialForm() and optimizeSpecialForm()
to specific subclasses of SyntaxProcedure, where they belong.
Eval/Apply on java.lang.Objects for full Java integration OR java-object wrapper
A proposal for a Java FFI:
syntax for java types:
$java.lang.Object =
(java-quote java.lang.Object) =
(quote java.lang.Object) + lookup in java-import environment
(java-new $java.lang.Object) [done, it's called 'new']
(java-import $java.lang.*)
(define obj (java-new $String "test"))
(java-call 'size obj) => 4 [done, it's called 'call']
(. obj size) => 4
($size obj) => 4
(java-package 'gleam.ext)
(java-class myList ($List) ; myList extends java.util.List
(java-ctor ((i 'int)) (java-set-field! length i))
(java-field (length 'int))
(java-method (get (i 'int)) ... )
(java-method (set! (i 'int) (obj $Object)) ...) )
Explicit first-class environments, with primitives:
make-environment [done]
call-with-current-environment [?]
current-environment [done]
in-environment [done]
environment? [done]
defined?
...
Implement as many primitives as possible in Scheme
list
append
null?
pair? (?)
...
Remove System.isKeyword().