Я хочу написать функцию, которая преобразует из «нормальной» записи, например: «1 + 4 * 2-8», в эту предварительную запись: «+ 1- * 428».
Я надеюсь, вы поняли это здесь. Важно: оно должно быть в строках.
Что я получаю до сих пор:
(define (converter lst )
(let ((operand1 (car lst))
(operator (car (cdr lst)))
(operand2 (caddr lst)))
(list operator
(converter operand1)
(converter operand2)))
)
(infixLst->prefixLst '(1 + 2 * 3))
У меня здесь две проблемы.
1) Это для списков, мне нужно, чтобы оно работало для строк типа "1 + 3" и не '(1 + 3)
2) Это не работать до сих пор (даже не для списков), потому что это дает мне некоторые ошибки в отношении "автомобиля", например: машина: ожидает пару, учитывая 1
Так, начиная с списка - > Строковое изменение: (Я знаю, что (список здесь неуместен. Как и другие методы списка, но у меня пока не было лучшей идеи.
(define (infix->prefix str)
(let ((operand1 (car str))
(operator (cadr str))
(operand2 (caddr str)))
(list operator
(infix->prefix operand1)
(infix->prefix operand2)))
)
(infix->prefix "1 + 2")