Функция числа (номер два one (один два три) -> 123

После решениякак пишется число в ракетке? (SpellNum) Сейчас я пытаюсь написать функцию, противоположную этой функции. т.е.

(tonumber ‘(one two three) --> 123

до сих пор я написал этот рабочий код

(define (symbol->digit n)
  (case n
    ('zero 0)
    ('one 1)
    ('two 2)
    ('three 3)
    ('four 4)
    ('five 5)
    ('six 6)
    ('seven 7)
    ('eight 8)
    ('nine 9)
    (else (error "unknown symbol:" n))))



(define (numlist n)
  (map symbol->digit  n))



(numlist '(one two three))

Из списка я получил '(1 2 3). Но есть проблема в функции ниже, в которой я хочу преобразовать список в число

(define (list->number l)
  (set! multiplier (* 10 (lenght l)))
  (for/list [(c l)] 
    (* multiplier c))
  (set! multiplier (/ multiplier 10)))

(list->number '(1 2 3))

любая помощь будет оценена. Я не могу найти документацию по всем видам петель онлайн. вhttp://docs.racket-lang.org/ts-reference/special-forms.html?q=loop#%28part._.Loops%29

Я хочу познакомиться с Racket, поэтому я хочу избежать встроенных функций преобразования. В списке -> число, я пытаюсь взять цифры один за другим из списка, а затем я хочу умножить их на 10 100 000, поэтому в зависимости от длины списка. так что он может вернуть номер. Например '(1 2 3) = 1 * 100 + 2 * 10 + 3 * 1

Ответы на вопрос(3)

Ваш ответ на вопрос