(ns untitled1.core
(:require [clojure.string :as str]))
(defn nottrue ;helper function for below function
[inp]
(not (true? inp))
)
(defn and-simplify
"function that, for example, takes: (and-simplify '(and true false)) and evaluates it -> false.
This function works perfectly if called directly from REPL."
[last]
(cond
(some false? last) false
(every? true? (rest last)) true
(= 1 (count (filter nottrue (rest last)))) (let [xyz (filter nottrue (rest last))] xyz)
:else (let [xxx (filter nottrue last)] xxx)
) )
(defn concact_function
"When the user types: (concact_function '(and false true) '(and true true true false)). It should
return -> Concacted Version: (and true true true false)"
[my_expression original]
(println "Concacted Version: " (concat (drop-last original) (and-simplify my_expression)))
)
Когда я ввожу: (concact_function '(и false true true)' (и true true true true false))
Это возвращается: Ошибка выполнения (IllegalArgumentException) в untitled1.core / concact-function (core.clj: 26). Не знаю, как создать ISeq из: java .lang.Boolean Concacted Version: (и правда true
Я сделал небольшую отладку и обнаружил, что проблема заключается в том, что я пытаюсь сжиматься (и -simplify my-выражение вернуть его для дальнейших манипуляций. Но я печатаю это ради визуализации)