clojure

core.logic stackoverflow when using sets

非 Y 不嫁゛ 提交于 2021-01-03 02:14:14
问题 It seems that clojure.core.logic has a problem walking sets. The minimal failing example: (run* [q] (== q #{})) produces java.lang.StackOverflowError at clojure.core.logic.Substitutions.walk(logic.clj:344) at clojure.core.logic$walk_STAR_$fn_ 2633.invoke(logic.clj:216) at clojure.core.logic$eval2838$fn _2839.invoke(logic.clj:956) at clojure.core.logic.protocols$eval1389$fn_ 1390$G _1380__1397.invoke(protocols.clj:55) at clojure.core.logic$walk_STAR_.invoke(logic.clj:214) at clojure.core.logic

core.logic stackoverflow when using sets

生来就可爱ヽ(ⅴ<●) 提交于 2021-01-03 02:09:19
问题 It seems that clojure.core.logic has a problem walking sets. The minimal failing example: (run* [q] (== q #{})) produces java.lang.StackOverflowError at clojure.core.logic.Substitutions.walk(logic.clj:344) at clojure.core.logic$walk_STAR_$fn_ 2633.invoke(logic.clj:216) at clojure.core.logic$eval2838$fn _2839.invoke(logic.clj:956) at clojure.core.logic.protocols$eval1389$fn_ 1390$G _1380__1397.invoke(protocols.clj:55) at clojure.core.logic$walk_STAR_.invoke(logic.clj:214) at clojure.core.logic

core.logic stackoverflow when using sets

放肆的年华 提交于 2021-01-03 02:08:39
问题 It seems that clojure.core.logic has a problem walking sets. The minimal failing example: (run* [q] (== q #{})) produces java.lang.StackOverflowError at clojure.core.logic.Substitutions.walk(logic.clj:344) at clojure.core.logic$walk_STAR_$fn_ 2633.invoke(logic.clj:216) at clojure.core.logic$eval2838$fn _2839.invoke(logic.clj:956) at clojure.core.logic.protocols$eval1389$fn_ 1390$G _1380__1397.invoke(protocols.clj:55) at clojure.core.logic$walk_STAR_.invoke(logic.clj:214) at clojure.core.logic

core.logic stackoverflow when using sets

寵の児 提交于 2021-01-03 02:06:12
问题 It seems that clojure.core.logic has a problem walking sets. The minimal failing example: (run* [q] (== q #{})) produces java.lang.StackOverflowError at clojure.core.logic.Substitutions.walk(logic.clj:344) at clojure.core.logic$walk_STAR_$fn_ 2633.invoke(logic.clj:216) at clojure.core.logic$eval2838$fn _2839.invoke(logic.clj:956) at clojure.core.logic.protocols$eval1389$fn_ 1390$G _1380__1397.invoke(protocols.clj:55) at clojure.core.logic$walk_STAR_.invoke(logic.clj:214) at clojure.core.logic

Passing a Clojure function as java.util.Function

荒凉一梦 提交于 2020-12-30 07:41:05
问题 As in topic, I'd like to use a Java method taking a Function as an argument and provide it with a Clojure function, be it anonymous or a regular one. Anyone has any idea how to do that? 回答1: java.util.function.Function is an interface. You need to implement the abstract method apply(T t). Something like this should do it: (defn hello [name] (str "Hello, " name "!")) (defn my-function[] (reify java.util.function.Function (apply [this arg] (hello arg)))) ;; then do (my-function) where you need

Find Value of Specific Key in Nested Map

怎甘沉沦 提交于 2020-12-29 03:50:42
问题 In Clojure, how can I find the value of a key that may be deep in a nested map structure? For example: (def m {:a {:b "b" :c "c" :d {:e "e" :f "f"}}}) (find-nested m :f) => "f" 回答1: Clojure offers tree-seq to do a depth-first traversal of any value. This will simplify the logic needed to find your nested key: (defn find-nested [m k] (->> (tree-seq map? vals m) (filter map?) (some k))) (find-nested {:a {:b {:c 1}, :d 2}} :c) ;; => 1 Also, finding all matches becomes a matter of replacing some

How to remove duplicates from a list in Clojure?

别说谁变了你拦得住时间么 提交于 2020-12-25 01:45:35
问题 How can I remove duplicate values from a list? For example, (remove-duplicates ["a" "b" "c" "a"]) => ("a" "b" "c") 回答1: user=> (distinct '(34 56 45 34 56 89 11 4 11 78 11)) (34 56 45 89 11 4 78) 回答2: If you don't care about the order, you can simply convert the list to a set: user=> (set '("a" "b" "c" "a" "lala" "d")) #{"a" "b" "c" "d" "lala"} 回答3: Dedupe is the faster equivalent for sorted lists since dedupe only keeps the prior element in memory. 来源: https://stackoverflow.com/questions

TIOBE 12 月编程语言:Python 有望第四次成为年度语言!

送分小仙女□ 提交于 2020-12-10 05:46:41
须臾间,2020 年已经不足一个月。近日,编程语言社区 TIOBE 最新发布了 12 月编程语言排行榜。下个月月初,TIOBE 社区也即将揭晓 2020 年年度编程语言,谁又能摘得桂冠? 毋庸置疑,能够获得年度编程语言称号的编程语言必然是 2020 年中最受关注以及流行度、涨幅最高的编程语言。对此,TIOBE 官方进行了相应的统计,在过去一年中,涨幅最大的为 Python,增幅 1.9%;其次为 C++ 0.71 %;R 语言增幅 0.6%、Groovy 增幅 0.69%。 综合来看,其他任何语言超过 Python 的机率都比较低。这意味着 Python 很有可能将于今年也是有史以来第四次获得年度编程语言称号的编程语言。 除了以上,值得关注的是,近几个月期间,TIOBE 榜单已然成为了 Python 与 Java 的追逐战战场。本月中,Java 虽然整体热度与趋势有所下滑,但还是再次超越了 Python 重回第二宝座。 其他编程语言排名 另外,本月编程语言榜单还有一些变化: Rust 从第 25 位上升到了 21 位; Julia 从 30 名上升到了第 26 名; Dart 从第 27 位下降到第 31 名; Kotlin 从第 36 位下降到第 40 位; TypeScript 从第 43 名上升一位,至第 42 名。 下面列出了完整的21-50名,因为是非官方发布的

记一次西安thoughtworks的面试经历

笑着哭i 提交于 2020-12-06 09:56:48
好久没有更新简历了,于是更新了下个人简历,算是自我总结吧,这也是多年来养成的一种习惯,定期维护更新。简历更新后,很快就接到了很多电话(虽然简历设置了不对外公开),目前我还没有换工作的打算,除非有非常合适的机会,哈哈!所以90%的面试机会我还是不由分说的拒绝了。 某天接到了一位猎头的电话,被告知是thoughtworks的岗位,问及是否有兴趣考虑。对这家公司之前还是有些了解的,以技术、咨询为驱动,敏捷开发而闻名,于是相互加了微信,了解一下总归没有坏处。于是,就有了接下来的经历,在此与大家分享一下,记录如下。(Homework、Pair Program、Face-to-face Interviews真的是非常棒的面试指导,值得仔细阅读) 1、猎头初聊 猎头加了微信后,发来了thoughtworks介绍及岗位JD,我主要看了下岗位JD,岗位还是偏于技术为导向的,相对吻合,就答应可以考虑,先看看。 随后,猎头与我约定时间进行了电话沟通,沟通的主要内容: thoughtworks公司介绍 岗位JD介绍 个人情况了解 电话聊了将近一个小时,首先进行了简单的自我介绍,近期工作内容、所用技术栈、团队人员组成情况、平时遇到问题是如何解决的、自己的未来职业规划等等这些问题,反正关于个人情况问的特别细,不输于一场技术面试。 接下来,就是猎头介绍了岗位JD情况、TW情况、以及TW面试流程的特殊性等。

微服务架构有毒,何时不使用微服务?

醉酒当歌 提交于 2020-11-18 17:48:50
在过去的四年中,使用微服务来构建应用程序似乎成了一种标准。大多数我所合作过的团队也对此表现出了不同程度的兴趣。 微服务所承诺的弹性、高可用、低耦合、敏捷,以及能够解决单体架构带来的问题,这些都是它流行的主要原因。 但是近段时间来,对于微服务的一些保留意见和注意事项似乎引起了人们的注意。 在这篇文章中,我重点想讨论的是微服务的应用,它的缺点是什么,以及在什么情况下应该慎重考虑使用微服务架构。 什么是微服务 在工业级别,关于微服务基本特征的定义比较一致。 这些特征可以总结如下: 微服务是一种应用于组件设计(服务如何分组)和部署架构(服务如何部署和通信)的模式。 微服务适用于创建具有“一定功能复杂性”的分布式应用程序。 各个服务必须小。 各个服务按功能划分,实现关注点分离。 各个服务保持自治和相互解耦,可以独立进行部署、版本控制和伸缩。 各个服务之间通过轻量级 API 和异步通道相结合的方式进行通信。 各个服务拥有独立的状态,并且只能通过服务本身来对其进行访问。 一个典型的微服务实现模式如下图: 图 1:典型的微服务实现模式 从上图中我们可以看到: 微服务中的每组服务有自己的前端 (由一个 API 和一个可选的 UI 组件组成)、一个实现自身服务领域逻辑的域层以及独立的数据存储。 前端复合。 将所有前端组件(UI 组件或 API)组合成一致前端(复合 UI 或 API 网关)。