Tuesday 15 June 2010

racket - Scheme. Recursive equivalence checking in the list -



racket - Scheme. Recursive equivalence checking in the list -

i have problem function remove first occurrence of specified element list. , cannot utilize equal. i'm doing wrong?

(define f (lambda (e x) (list? x) (check e x))) (define check (lambda (e x) (cond ((eq?(cdr x) '()) 'no_occur) (#t (cond ((eq?(car x)e) (cdr x)) (#t (cons '() (cons (car x) (check e (car x)))))))))) (f 'u '(k u l o))

i this: mcdr: contract violation expected: mpair? given: k

a solution minimal changes. note lastly phone call check (check e (cdr x)) uses cdr , not auto of x. why?

#lang racket (define f (lambda (e x) (if (list? x) (check e x) #f))) (define check (lambda (e x) (cond ((eq? x '()) 'no_occur) (#t (cond ((eq? (car x) e) (cdr x)) (#t (cons (car x) (check e (cdr x))))))))) (f 'u '(k u l o))

scheme racket r5rs

No comments:

Post a Comment