|
201 | 201 | '(2 3 4)) |
202 | 202 | (check-equal? (run '(define (f x y) y) |
203 | 203 | '(f 1 (add1 #f))) |
| 204 | + 'err) |
| 205 | + (check-equal? (run '(define (f x y) y) |
| 206 | + '(f 1)) |
| 207 | + 'err) |
| 208 | + (check-equal? (run '(define (f x y) y) |
| 209 | + '(f 1 2 3)) |
204 | 210 | 'err)) |
205 | 211 |
|
206 | 212 | (begin ;; Iniquity+ |
|
280 | 286 | (cons (f 1 2 3) |
281 | 287 | '())))) |
282 | 288 | '(() 2 (3))) |
283 | | - |
284 | | - (check-equal? (run '(define (f) 1) |
285 | | - '(apply f '())) |
286 | | - 1) |
287 | | - (check-equal? (run '(define (f . xs) 1) |
288 | | - '(apply f '())) |
289 | | - 1) |
290 | | - (check-equal? (run '(define (f . xs) xs) |
291 | | - '(apply f '())) |
292 | | - '()) |
293 | | - (check-equal? (run '(define (f . xs) xs) |
294 | | - '(apply f (cons 1 (cons 2 (cons 3 '()))))) |
295 | | - '(1 2 3)) |
296 | | - (check-equal? (run '(define (f . xs) xs) |
297 | | - '(apply f 1 2 (cons 3 '()))) |
298 | | - '(1 2 3)) |
299 | | - (check-equal? (run '(define (append . xss) |
300 | | - (if (empty? xss) |
301 | | - '() |
302 | | - (if (empty? (car xss)) |
303 | | - (apply append (cdr xss)) |
304 | | - (cons (car (car xss)) |
305 | | - (apply append (cdr (car xss)) (cdr xss)))))) |
306 | | - '(define (list . xs) xs) |
307 | | - '(define (flatten xs) |
308 | | - (apply append xs)) |
309 | | - '(flatten (list (append) (append (list 1 2 3) (list 4 5) (list 6)) (list 7)))) |
310 | | - '(1 2 3 4 5 6 7)) |
311 | | - |
312 | | - ;; Extra tests |
313 | 289 | (check-equal? (run '(define f (case-lambda)) |
314 | 290 | '(if #f (f) 1)) |
315 | 291 | 1) |
|
321 | 297 | '(let ((x (f 1 2 3))) |
322 | 298 | (f x))) |
323 | 299 | '()) |
324 | | - (check-equal? (run '(define (f x . xs) |
325 | | - (let ((ys xs)) |
326 | | - (if (empty? xs) |
327 | | - x |
328 | | - (apply f ys)))) |
329 | | - '(let ((z 1)) |
330 | | - (f 1 2 3))) |
331 | | - 3) |
332 | | - (check-equal? (run '(define (f x . xs) |
333 | | - (let ((ys xs)) |
334 | | - (if (empty? xs) |
335 | | - x |
336 | | - (apply f ys)))) |
337 | | - '(let ((z 1)) |
338 | | - (f (f 1 2 3)))) |
339 | | - 3) |
340 | | - (check-equal? (run '(define f |
341 | | - (case-lambda |
342 | | - [(x . xs) |
343 | | - (let ((ys xs)) |
344 | | - (if (empty? xs) |
345 | | - x |
346 | | - (apply f xs)))])) |
347 | | - '(let ((z 1)) |
348 | | - (f (f 1 2 3)))) |
349 | | - 3) |
350 | | - (check-equal? (run '(define f |
351 | | - (case-lambda |
352 | | - [(x) x] |
353 | | - [(x . xs) |
354 | | - (apply f xs)])) |
355 | | - '(f 1 2 3)) |
356 | | - 3) |
357 | | - (check-equal? (run '(define f |
358 | | - (case-lambda |
359 | | - [(x) x] |
360 | | - [(x . xs) |
361 | | - (apply f xs)])) |
362 | | - '(f)) |
363 | | - 'err) |
364 | | - (check-equal? (run '(define f |
365 | | - (case-lambda |
366 | | - [(x y) x] |
367 | | - [(x y . xs) |
368 | | - (apply f xs)])) |
369 | | - '(f 1 2 3)) |
370 | | - 'err) |
371 | | - (check-equal? (run '(define f |
372 | | - (case-lambda |
373 | | - [(x y) x] |
374 | | - [(x y . xs) |
375 | | - (apply f xs)])) |
376 | | - '(f 1 2 (cons 3 (cons 4 '())))) |
377 | | - 'err) |
378 | | - (check-equal? (run '(define f |
379 | | - (case-lambda |
380 | | - [(x) (char->integer (car x))] |
381 | | - [(x y . xs) |
382 | | - (apply f xs)])) |
383 | | - '(f 1 2 (cons #\A 4))) |
384 | | - 65) |
385 | 300 | (check-equal? (run '(define f |
386 | 301 | (case-lambda |
387 | 302 | [(x y) x] |
|
390 | 305 | [(x y z . xs) |
391 | 306 | (char->integer z)])) |
392 | 307 | '(f 1 #\a 3)) |
393 | | - 97) |
394 | | - (check-equal? (run '(define plus |
395 | | - (case-lambda |
396 | | - [() 0] |
397 | | - [(n . ns) (+ n (apply plus ns))])) |
398 | | - '(define (cars xss) |
399 | | - (if (empty? xss) |
400 | | - '() |
401 | | - (cons (car (car xss)) (cars (cdr xss))))) |
402 | | - '(define (cdrs xss) |
403 | | - (if (empty? xss) |
404 | | - '() |
405 | | - (cons (cdr (car xss)) (cdrs (cdr xss))))) |
406 | | - '(define (mapplus ns . nss) |
407 | | - (if (cons? ns) |
408 | | - (cons (apply plus (car ns) (cars nss)) |
409 | | - (apply mapplus (cdr ns) (cdrs nss))) |
410 | | - '())) |
411 | | - '(mapplus (cons 1 (cons 2 '())) |
412 | | - (cons 3 (cons 4 '())) |
413 | | - (cons 5 (cons 6 '())))) |
414 | | - '(9 12)))) |
| 308 | + 97))) |
415 | 309 |
|
416 | 310 | (define (test/io run) |
417 | 311 | (begin ;; Evildoer |
|
0 commit comments