Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure:你能将Concat与其他非常复杂的函数一起使用吗?_Clojure_Evaluation - Fatal编程技术网

Clojure:你能将Concat与其他非常复杂的函数一起使用吗?

Clojure:你能将Concat与其他非常复杂的函数一起使用吗?,clojure,evaluation,Clojure,Evaluation,当我输入:(conact_函数(和假真)’(和真假)) 返回:untitled1.core/conact-function(core.clj:26)处的执行错误(IllegalArgumentException)。 不知道如何从java.lang.Boolean创建ISeq 具体版本:(正确无误) 我做了一点调试,发现问题出在我尝试conact(并简化我的表达式)时。simplify的工作原理与直接调用时的工作原理完全相同,但由于某种原因,它不喜欢conact (我实际上不需要打印它,我只需要返

当我输入:(conact_函数(和假真)’(和真假))

返回:untitled1.core/conact-function(core.clj:26)处的执行错误(IllegalArgumentException)。 不知道如何从java.lang.Boolean创建ISeq 具体版本:(正确无误)

我做了一点调试,发现问题出在我尝试conact(并简化我的表达式)时。simplify的工作原理与直接调用时的工作原理完全相同,但由于某种原因,它不喜欢conact


(我实际上不需要打印它,我只需要返回它进行进一步操作。但我打印它是为了可视化)

concat
函数处理集合,函数
和simplify
只返回bool。要解决此问题,可以将整个cond子句放在向量或列表中,或将每个cond子句的返回放在向量中

使用以下修复程序:

(定义并简化
例如,函数接受:(和simplify'(和true-false))并对其求值->false。
如果直接从REPL调用此函数,则此函数可以正常工作。”
[最后]
[(秒)
(一些错误?最后一个)错误
(每一个?真的?(最后休息)真的
(=1(计数(筛选器不为真(剩余最后一个)))(让[xyz(筛选器不为真(剩余最后一个))]xyz)
:else(让[xxx(最后一个过滤器不为真)]xxx)
)])
将返回预期结果:
具体版本:(and true-true-false)
(some-false?last)false
(every?true?(rest-last))true
应该是
(some-false?last)[false]
(every?true?(rest-last))[true]
有趣。1.)如果直接调用并简化,它为什么工作,但不是在浓缩的时候?2.)只是好奇,项目不需要,但如果直接调用,是否有方法返回true而不是[true]或false而不是[false]?3.)如果我特别遇到这样的问题,你会建议如何解决?
(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)))
  )