Scheme - błędny argument funkcji

0

Dobry, mam takie proste zadanko w scheme żeby napisać funkcję do wypisania ntego elementu. Naskrobałem takie ufo ale mi nie działa:

    (define (nty lista n licznik)
  (if null? lista)
  "LISTA JEST PUSTA"
  (if < licznik n)
      (nty((cdr lista) n (+ licznik 1)))
  (car lista)
)

(nty '(1 3 5 7 9) 2 0)

wyrzuca mi to błąd:
procedure application: expected procedure, given: (3 5 7 9); arguments were: 2 1

nie wiedziałem w jakie kolorowanie składni to wrzucić.

pomoże ktoś?

0

Nie znam za bardzo Lisp'a ale co zauważyłem to:
Masz o nawias za dużo chyba:

(nty (cdr lista) n (+ licznik 1))

Oprócz tego te ify coś mi się nie podobają.

0

http://docs.racket-lang.org/reference/if.html -- zastanów się jak ten if ma działać, jak nie ma nic w środku.

0

Ale kaleczysz ten język...

(define (nth lst n)
    (if (= n 0) (car lst) (nth (cdr lst) (- n 1))))
0
msm napisał(a):

Ale kaleczysz ten język...

(define (nth lst n)
    (if (= n 0) (car lst) (nth (cdr lst) (- n 1))))

Ale kaleczysz ten algorytm...

(define (nth n lst)
  (cond
    ((null? lst) lst)      
    ((zero? n) (car lst))
    (else (nth (- n 1) (cdr lst)))))

1 użytkowników online, w tym zalogowanych: 0, gości: 1