@@ -52,7 +52,7 @@ public struct Interpreter {
52
52
/// Calls the given procedure
53
53
public func call( _ args: [ Any ] ) throws -> Any ? {
54
54
var inner = Env ( parms, args, outer: env)
55
- return try Interpreter . eval ( & body, with: & inner)
55
+ return try Interpreter . eval ( body, with: & inner)
56
56
}
57
57
58
58
}
@@ -184,7 +184,7 @@ public struct Interpreter {
184
184
185
185
- Returns: The evaluated statement
186
186
*/
187
- static func eval( _ x: inout Any , with env: inout Env ) throws -> Any ? {
187
+ static func eval( _ x: Any , with env: inout Env ) throws -> Any ? {
188
188
if let x = x as? Symbol { // variable reference
189
189
guard let ref = env. find ( x) ? [ x] else {
190
190
return x
@@ -210,25 +210,25 @@ public struct Interpreter {
210
210
}
211
211
return lis
212
212
} else if x. first as? Symbol == " if " { // conditional
213
- guard var test = x [ safe: 1 ] , let conseq = x [ safe: 2 ] , let alt = x [ safe: 3 ] else {
213
+ guard let test = x [ safe: 1 ] , let conseq = x [ safe: 2 ] , let alt = x [ safe: 3 ] else {
214
214
throw SwispError . SyntaxError ( message: " invalid conditional statement " )
215
215
}
216
- guard let bool = try eval ( & test, with: & env) as? Bool else {
216
+ guard let bool = try eval ( test, with: & env) as? Bool else {
217
217
throw SwispError . SyntaxError ( message: " invalid conditional statement " )
218
218
}
219
- var exp = bool ? conseq : alt
220
- return try eval ( & exp, with: & env)
219
+ let exp = bool ? conseq : alt
220
+ return try eval ( exp, with: & env)
221
221
} else if x. first as? Symbol == " define " { // definition
222
- guard let `var` = x [ safe: 1 ] as? Symbol , var exp = x [ safe: 2 ] else {
222
+ guard let `var` = x [ safe: 1 ] as? Symbol , let exp = x [ safe: 2 ] else {
223
223
throw SwispError . SyntaxError ( message: " invalid definition " )
224
224
}
225
- env [ `var`] = try eval ( & exp, with: & env)
225
+ env [ `var`] = try eval ( exp, with: & env)
226
226
return nil
227
227
} else if x. first as? Symbol == " set! " { // assignment
228
- guard let `var` = x [ safe: 1 ] as? Symbol , var exp = x [ safe: 2 ] , let outer = env. find ( `var`) else {
228
+ guard let `var` = x [ safe: 1 ] as? Symbol , let exp = x [ safe: 2 ] , let outer = env. find ( `var`) else {
229
229
throw SwispError . SyntaxError ( message: " invalid assignment " )
230
230
}
231
- outer [ `var`] = try eval ( & exp, with: & env)
231
+ outer [ `var`] = try eval ( exp, with: & env)
232
232
return nil
233
233
} else if x. first as? Symbol == " lambda " { // lambda
234
234
guard let parms = x [ safe: 1 ] as? [ Symbol ] , let body = x [ safe: 2 ] as? [ Any ] else {
@@ -237,15 +237,15 @@ public struct Interpreter {
237
237
return Lambda ( parms, body, env)
238
238
} else { // procedure call
239
239
var args : [ Any ] = [ ]
240
- guard var exp = x [ safe: 0 ] else {
240
+ guard let exp = x [ safe: 0 ] else {
241
241
throw SwispError . SyntaxError ( message: " invalid procedure called " )
242
242
}
243
243
244
- let proc = try eval ( & exp, with: & env)
244
+ let proc = try eval ( exp, with: & env)
245
245
246
246
for element in x. dropFirst ( ) {
247
- var element = element
248
- guard let arg = try eval ( & element, with: & env) else {
247
+ let element = element
248
+ guard let arg = try eval ( element, with: & env) else {
249
249
throw SwispError . SyntaxError ( message: " invalid procedure called " )
250
250
}
251
251
args. append ( arg)
@@ -287,8 +287,8 @@ public struct Interpreter {
287
287
}
288
288
289
289
do {
290
- var parsed = try Interpreter . parse ( input)
291
- if var val = try Interpreter . eval ( & parsed, with: & globalEnv) {
290
+ let parsed = try Interpreter . parse ( input)
291
+ if var val = try Interpreter . eval ( parsed, with: & globalEnv) {
292
292
print ( Interpreter . schemeString ( & val) )
293
293
}
294
294
} catch let error as SwispError {
0 commit comments