Цель моей функции - прочитать входной вектор интерпретации и вернуть значение после анализа.
Для архивирования моей цели мне нужно добавить строку в вектор и сохранитьперемены.Функция ConI возвращает новый вектор, но не меняет мою переменную eq_code на самом деле.
(EE__code (вектор входа [3 1]))) неНе меняйте значение вектора eq_code .Я не думаю, что повторение функции let с переменной eq_code решит мою проблему.
Вот фрагмент моего кода:
(defn interpreted-lang-while [interpreting-vector]
(let [vector interpreting-vector
;before_if code added to eq_code
eq_code [(str (get-in vector [1 1]) "0;")]]
(def interpret-eval-eq_code (->> (apply str eq_code) lang1-parser lang1-interpret))
(while
;eval the code (last value contains condition)
(not= 0 (do (conj eq_code (str (get-in vector [2 1]) ";"))(interpret-eval-eq_code) (prn (str "Eval condition : " (apply str eq_code)))))
;if the last value is not 0 =>add the statement_OK and eval the condition again
(do (conj eq_code (get-in vector [3 1])) (prn (str "End loop code : " (apply str eq_code)))))
(conj vector (str (interpret-eval-eq_code) ";"))
;last values contains 0 =>end of the while
(prn (str "Code equivalent : " eq_code))
(conj eq_code (get-in vector [4 1]))
(interpret-eval-eq_code)))
Я выполняюследующая строка с clojure:
(interpreted-lang-while [:LangWHILE [:before_while "a=1; b= a+2; c="] [:condition_expression "a-3"] [:statements_OK "a=a+1;b=b+2;"] [:after_while " c+1;"]])
Я получаю следующий вывод на терминале:
project.core=> "Eval condition : a=1; b= a+2; c=0;"
"End loop code : a=1; b= a+2; c=0;"
"Eval condition : a=1; b= a+2; c=0;"
"End loop code : a=1; b= a+2; c=0;"
"Eval condition : a=1; b= a+2; c=0;"
"End loop code : a=1; b= a+2; c=0;"
<Infinite loop ...>
Вместо
project.core=> "Eval condition : a=1; b= a+2; c=0;a-3;"
"End loop code : a=1; b= a+2; c=0;a-3;a=a+1;b=b+2;"
"Eval condition : a=1; b= a+2; c=0;a-3;a=a+1;b=b+2;a-3;"
<And so on ..>
Можете ли вы предложить мне способдобавить новый элемент в мой вектор и изменить мою переменную eq_code ?Спасибо за вашу помощь.