Я пытаюсь написать функцию схемы, которая принимает в списке букв, хэширует их с другой функцией, умножает каждую итеративно на 5^i и суммирует их вместе. Я новичок в схеме, и это то, что я написал:Помощник схемы Функция и всегда возвращающая нуль
(define (key w)
keyhelper w 0)
(define (keyhelper w i)
(cond ((null? w) '())
(else (+ (* (hashchar(car w) (expt 5 i)) (keyhelper(cdr w) (+ i 1)))))))
Так, например, делать (ключ «(привет)) должны делать hashchar (h) * 5^0 + hashchar (е) * 5^1 + hashchar (l)^5^2 ... и т. Д. Функция возвращает только 0 для любого списка, который отправлен. Может ли кто-нибудь сказать мне, где я ошибаюсь?
Моя реализация hashchar является:
(define hashchar
(lambda (x)
(cond
((eq? x 'a) 1)
((eq? x 'b) 2)
((eq? x 'c) 3)
((eq? x 'd) 4)
((eq? x 'e) 5)
((eq? x 'f) 6)
((eq? x 'g) 7)
((eq? x 'h) 8)
((eq? x 'i) 9)
((eq? x 'j) 10)
((eq? x 'k) 11)
((eq? x 'l) 12)
((eq? x 'm) 13)
((eq? x 'n) 14)
((eq? x 'o) 15)
((eq? x 'p) 16)
((eq? x 'q) 17)
((eq? x 'r) 18)
((eq? x 's) 19)
((eq? x 't) 20)
((eq? x 'u) 21)
((eq? x 'v) 22)
((eq? x 'w) 23)
((eq? x 'x) 24)
((eq? x 'y) 25)
((eq? x 'z) 26))))
Где находится 'hashchar'? –
hashchar определяется в другом файле, который я включил в начало. hashchar преобразует букву в ее число, например a = 0, b = 1, c = 2 и т. д. – WinterStar
Отсутствует открывающая скобка перед вызовом 'keyhelper'. – uselpa