Добавление элемента в вектор (функция Conon) и сохранение изменений - PullRequest
0 голосов
/ 28 декабря 2018

Цель моей функции - прочитать входной вектор интерпретации и вернуть значение после анализа.

Для архивирования моей цели мне нужно добавить строку в вектор и сохранитьперемены.Функция 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 ?Спасибо за вашу помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...