clojure

Exclude java.lang.* in Clojure namespace

自古美人都是妖i 提交于 2020-08-27 04:28:09
问题 Is there a possibility to exclude the classnames from java.lang in a Clojure namespace? I need to use variables like Byte and String, and here the java.lang classnames come into my way. maybe something like (ns my-ns (:exclude java.lang)) ? 回答1: If you use the fully qualified name, there's no ambiguity. For example: user=> (def user/Byte (java.lang.Byte/decode "0")) #'user/Byte After you've defined Byte in this way, Byte will resolve to your definition without the need to qualify the name

Clojure printing functions: pr vs print

时光毁灭记忆、已成空白 提交于 2020-08-22 03:01:46
问题 What is the difference between pr / prn and print / println ? When would one be used over the other? 回答1: They differ in the following ways. print / println produce output intended for human consumption pr / prn produce output that may be read by the reader So use the former functions when producing output for humans, and the latter for when producing output for other Clojure programs to consume. In the case of pr / prn , strings will be quoted, and special characters escaped. Characters will

TIOBE 8 月编程语言:C、Java 差距拉大,R 语言盛行

只愿长相守 提交于 2020-08-19 19:12:23
编程语言社区 TIOBE 最新发布了 8 月编程语言排行榜。 相比上个月,本月 TIOBE 指数整个体变化并不大。C 语言依然保持强劲地增长势头,与第二名 Java 之间差距逐月增大,从上个月相差 1.35% 的份额逐步增长到 2.55% 的差额。 在 TIOBE Top 10 榜单中,R 语言上个月被 TIOBE 官方称之为“史无前例的高光时刻” , 本月继续保持,且在数据分析和统计计算等领域,也成为开发者最受欢迎的编程语言之一。回看 2019 年 8 月,R 语言还处于第 20 位,一年后,一连上升了 12 个名次,到达了第 8 位。对此,TIOBE 官方预测,R 语言也有望成为 2020 年 TIOBE 年度编程语言。 除了以上,Go、Swift、SQL 三种语言也进行了位置角逐: Swift 在本月下降 2 个名次,从第 10 名降到了第 12 名; SQL 将其取而代之,成为第 10 名。 其他编程语言排名 同样值得注意的是,Groovy 重新进入了 TIOBE 编程语言排行榜的 TOP 20名,并且 Hack 在第 44 位,也成功进入了前 50 名。 下面列出了完整的 21-50 名,因为是非官方发布的,所以可能存在遗漏: 第 51-100 名如下,由于它们之间的数值差异较小,仅以文本形式列出(按字母排序): ABC, Alice, APL, AutoLISP,

Java 的新未来:逐渐“Kotlin 化”

若如初见. 提交于 2020-08-17 18:16:50
我们行业始终有一个热门话题,那就是对 Java 的批判,这种批判很大程度上来源于 Java 的繁琐性以及它所生成的大量样板式代码 ,而这些代码在很多场景下是根本不需要的。 虽然我一直以来都很喜欢 Java,但是我不能说这些指责是错误的。的确,Java 的繁琐性以及数量不菲的杂乱代码在很多情况下会很烦人。在大多数情况下,我们不得不接受我们生活在一个不完美的世界这一现实,很多时候,我们必须两害相权取其轻。我们都知道,Java 并不完美,但是主要的问题在于在此之前为什么没有采取任何措施来解决这些问题呢? 我认为,变更需要耗费这么长时间的唯一原因就是 Java 缺乏足够的竞争。 Java 语言之所以能够主导市场,可能就是因为缺乏真正的竞争对手 ,当然也要归功于 Sun 和 Oracle 先后做出的巨大努力。 Java 提供的强类型安全性,以及作为一个结构良好的语言所带来的其他特性,使其成为大型项目中非常流行的语言 。通过使用 Java,我们很少会让事情变得难以收拾。Java 的另外一个重要特点是作为多平台语言,它运行在自己的虚拟机上,这使其能够完美契合很多的组织。如果你通过著名的 JIT 编译器启用了其自动性能优化的固有能力,那么在很多情况下都能将糟糕代码所带来的影响最小化,这样我们就有了一组使用 Java 的坚实理由。 但是,后来发生了什么呢?接下来的事情就是,能够像 Java

Lambda表达式用法大比较: Scala和Java 8

怎甘沉沦 提交于 2020-08-14 20:12:56
最近几年Lambda表达式风靡于编程界. 很多现代编程语言都把它作为函数式编程的基本组成部分. 基于JVM的编程语言如Scala,Groovy还有Clojure把它们作为关键部分集成在语言中.现在Java8也加入了它们的行列. 有趣的是,对于JVM来说,Lambda表达式是完全不可见的,并没有匿名函数和Lamada表达式的概念,它只知道字节码是严格面向对象规范的.它取决于语言的作者和它的编译器在规范限制内创造出更新,更高级的语言元素. 我们第一次接触它是在我们要给Takipi添加Scala支持的时候, 我们不得不深入研究Scala的编译器.伴随着JAVA8的来临,我认为探究Scala和java编译器是如何实现Lambda表达式是非常有趣的事情.结果也是相当出人意料. 接下来,我展示一个简单的Lambda表达式,用于将字符串集合转化成字符串自身长度的集合。 Java的写法 – 1List names = Arrays.asList("1", "2", "3"); 2Stream lengths = names.stream().map(name -> name.length()); Scala的写法 – 1.val names = List("1", "2", "3") 2.val lengths = names.map(name =>name.length) 表面上看起来非常简单

阿里P8教你如何学习JVM

落爺英雄遲暮 提交于 2020-08-09 20:33:36
前言 提到Java虚拟机(JVM),可能大部分人的第一印象是“难”,但当让我们真正走入“JVM世界”的时候,会发现其实问题并不像我们想象中的那么复杂。唯一真正令我们恐惧的,其实是恐惧本身。 为了帮助大家更好的学习JVM,小编送给大家一本PDF书籍,详见下文啦~ 一、什么是JVM? JVM简介: JVM是Java Virtual Machine的缩写,中文翻译为Java虚拟机,是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。简单来说JVM是用来解析和运行Java程序的。 Java有一个非常重要的特点“平台的无关性”,就是使用JVM实现的。Java语言只需要生成Jvm上运行的目标代码(字节码),就可以在多种平台上不加修改地运行,因为JVM本身屏蔽了与具体平台相关的信息,使得Java能够“一次编译,到处运行”。 二、为什么要学习JVM? 学习JVM无外乎以下几个原因: 1、 程序调优 不同的程序(业务场景)需要不同的Jvm配置,比如设置不同的垃圾收集器、设置新生代和老生带的内存配置和占比等,不同的配置对于程序的运行有着千差万别的影响。而Jvm默认的配置只能保证程序能够“运行”,而想要“很好的运行”甚至是“更好的运行”,就是学习Jvm最主要的因素之一。 2、 排查程序运行问题 有些程序可能在线上使用的时候会遇到各种各样的问题

Lambda表达式用法大比较: Scala和Java 8

廉价感情. 提交于 2020-08-08 11:15:52
最近几年Lambda表达式风靡于编程界. 很多现代编程语言都把它作为函数式编程的基本组成部分. 基于JVM的编程语言如Scala,Groovy还有Clojure把它们作为关键部分集成在语言中.现在Java8也加入了它们的行列. 有趣的是,对于JVM来说,Lambda表达式是完全不可见的,并没有匿名函数和Lamada表达式的概念,它只知道字节码是严格面向对象规范的.它取决于语言的作者和它的编译器在规范限制内创造出更新,更高级的语言元素. 我们第一次接触它是在我们要给Takipi添加Scala支持的时候, 我们不得不深入研究Scala的编译器.伴随着JAVA8的来临,我认为探究Scala和java编译器是如何实现Lambda表达式是非常有趣的事情.结果也是相当出人意料. 接下来,我展示一个简单的Lambda表达式,用于将字符串集合转化成字符串自身长度的集合。 Java的写法 – 1List names = Arrays.asList("1", "2", "3"); 2Stream lengths = names.stream().map(name -> name.length()); Scala的写法 – 1.val names = List("1", "2", "3") 2.val lengths = names.map(name =>name.length) 表面上看起来非常简单

TIOBE 8 月编程语言:C、Java 差距拉大,R 语言盛行

若如初见. 提交于 2020-08-05 17:56:34
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 编程语言社区 TIOBE 最新发布了 8 月编程语言排行榜。 相比上个月,本月 TIOBE 指数整个体变化并不大。C 语言依然保持强劲的增长势头,与第二名 Java 之间差距逐月增大,从上个月相差 1.35% 的份额逐步增长到 2.55% 的差额。 在 TIOBE Top 10 榜单中,R 语言上个月被 TIOBE 官方称之为“史无前例的高光时刻” , 本月继续保持,且在数据分析和统计计算等领域,也成为开发者最受欢迎的编程语言之一。回看 2019 年 8 月,R 语言还处于第 20 位,一年后,一连上升了 12 个名次,到达了第 8 位。对此,TIOBE 官方预测,R 语言也有望成为 2020 年 TIOBE 年度编程语言。 除了以上,Go、Swift、SQL 三种语言也进行了位置角逐: Swift 在本月下降 2 个名次,从第 10 名降到了第 12 名; SQL 将其取而代之,成为第 10 名。 其他编程语言排名 同样值得注意的是,Groovy 重新进入了 TIOBE 编程语言排行榜的 TOP 20名,并且 Hack 在第 44 位,也成功进入了前 50 名。 下面列出了完整的 21-50 名,因为是非官方发布的,所以可能存在遗漏: 第 51-100 名如下

How to remove multiple keys from a map?

南楼画角 提交于 2020-07-28 11:24:56
问题 I have a function that removes a key from a map: (defn remove-key [key map] (into {} (remove (fn [[k v]] (#{key} k)) map))) (remove-key :foo {:foo 1 :bar 2 :baz 3}) How do i apply this function using multiple keys? (remove-keys [:foo :bar] {:foo 1 :bar 2 :baz 3}) I have an implementation using loop...recur. Is there a more idiomatic way of doing this in Clojure? (defn remove-keys [keys map] (loop [keys keys map map] (if (empty? keys) map (recur (rest keys) (remove-key (first keys) map)))))