@@ -238,12 +238,19 @@ static obj add_extras(int ex, obj env)
238
238
" ((eq? item (car x)) x)"
239
239
" (else (memq item (cdr x)))))" ,
240
240
env );
241
+ evalstr ("(define (member item x)"
242
+ " (cond ((null? x) false)"
243
+ " ((equal? item (car x)) x)"
244
+ " (else (member item (cdr x)))))" ,
245
+ env );
241
246
}
242
247
if (ex >= 254 ) {
243
248
define_variable (of_identifier ("equal?" ),
244
249
of_function (is_equal_p ), env );
245
250
}
246
251
if (ex >= 256 ) {
252
+ define_variable (of_identifier ("integer?" ),
253
+ of_function (is_integer_p ), env );
247
254
define_variable (of_identifier ("number?" ),
248
255
of_function (is_number_p ), env );
249
256
define_variable (of_identifier ("symbol?" ),
@@ -303,6 +310,15 @@ static obj add_extras(int ex, obj env)
303
310
env );
304
311
evalstr ("(define driver-loop repl)" , env );
305
312
}
313
+ if (ex >= 435 ) {
314
+ evalstr ("(define (require p) (if (not p) (amb)))" , env );
315
+ evalstr ("(define (distinct? items)"
316
+ " (cond ((null? items) true)"
317
+ " ((null? (cdr items)) true)"
318
+ " ((member (car items) (cdr items)) false)"
319
+ " (else (distinct? (cdr items)))))" ,
320
+ env );
321
+ }
306
322
return unspecified ;
307
323
}
308
324
0 commit comments