服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - 编程技术 - Joker:Go 编写的 Clojure 解释型方言

Joker:Go 编写的 Clojure 解释型方言

2021-09-03 23:53开源中国局长 编程技术

此 Joker 非彼 Joker,本文将要介绍的 Joker 是一门使用 Go 编写的 Clojure 解释型方言,同时也是一个 Clojure(Script) linter。

此 Joker 非彼 Joker,本文将要介绍的 Joker 是一门使用 Go 编写的 Clojure 解释型方言,同时也是一个 Clojure(Script) linter。

Joker:Go 编写的 Clojure 解释型方言

Joker 代码示例

1. 在 Clojure 中编写脚本

Joker:Go 编写的 Clojure 解释型方言

2. 即时检查 Clojure(Script) 代码

Joker:Go 编写的 Clojure 解释型方言

特性

  • 拥有快速的启动时间
  • 提高明确的错误消息和堆栈跟踪
  • 支持发送 HTTP 请求、读取和解析 JSON、使用文件系统、启动外部进程等
  • 支持所有主流编辑器
  • 自动检查语法错误、函数数量不匹配、无法解析的符号、未使用的命名空间、变量、绑定等
  • ……

根据文档的说明,Joker 的目标包括:

  • 适用于编写脚本(并且具备轻量级、快速启动的特性)。作者表示这是 Clojure 不擅长的事情,也是他试图解决的个人问题。
  • 对用户友好。反馈良好的错误消息和堆栈跟踪对于程序员的幸福和生产力绝对至关重要。
  • 为 Clojure 及其方言提供一些工具。Joker 具有 linter 模式,可用于对 Joker、Clojure 和 ClojureScript 代码进行 linting,它会捕获一些基本错误。Joker 还可以对 Clojure 代码进行格式化(查看 format mode)或提供 EDN 数据结构。例如,以下命令可用于漂亮地打印 EDN 数据结构(从标准输入读取):
  1. joker--hashmap-threshold-1-e@quot;(pprint(read))@quot;
  • 尽可能地(在语法和语义上)接近 Clojure。Joker 应该真正成为 Clojure 的方言,而不是受 Clojure 启发的语言。也就是说,Clojure 的许多特性是 Joker 没有也永远不会拥有的。但 Joker 会具备与 Clojure 接近但只适用于自身的特性。

Joker 也罗列了两个不关注的目标:

  • 性能。作者表示,如果使用者注重性能,请直接使用 Clojure,因为 Joker 只是解释器的一个简单实现,他没打算把优先级放在提升性能上。
  • 拥有所有 Clojure 特性。作者表示,由于使用了不同的宿主语言(Go 与 Java),Clojure 的某些特性无法在 Joker 实现。至于其他特性,他认为对于他想到的 Joker 使用场景来说并不重要。

语法对比

Joker:Go 编写的 Clojure 解释型方言

Joker:Go 编写的 Clojure 解释型方言

安装

在 macOS 上,安装 Joker 最便捷的方法是使用 Homebrew:

  1. brewinstallcandid82/brew/joker
  • 如果使用 Linuxbrew,可以在 Linux 上使用相同的命令。
  • 如果使用 Arch Linux,提供了 AUR 包。
  • 如果使用 Nix,可以用下面的方式安装 Joker
  1. nix-env-ijoker

在其他平台上(或者希望手动安装),为对应的平台下载预编译的二进制文件并将其放在 PATH 中。

当然还可以从源代码构建 Joker。

本文地址:https://www.oschina.net/news/158495/joker-lang

延伸 · 阅读

精彩推荐
  • 编程技术从Context源码实现谈React性能优化

    从Context源码实现谈React性能优化

    这篇文章主要介绍Context的实现原理,源码层面掌握React组件的render时机,从而写出高性能的React组件,源码层面了解shouldComponentUpdate、React.memo、PureComponen...

    魔术师卡颂5312020-12-20
  • 编程技术用户态 Tcpdump 如何实现抓到内核网络包的?

    用户态 Tcpdump 如何实现抓到内核网络包的?

    在网络包的发送和接收过程中,绝大部分的工作都是在内核态完成的。那么问题来了,我们常用的运行在用户态的程序 tcpdump 是那如何实现抓到内核态的包...

    开发内功修炼11612021-09-08
  • 编程技术真正聪明的程序员,总有办法不加班

    真正聪明的程序员,总有办法不加班

    工作效率提升了,就可以少加班了,聪明的程序员,总会有一堆可以提升编码效率的工具?当一种工具满足不了工作需求,就去探索新的,今天纬小创就给...

    今日头条12482021-03-04
  • 编程技术简单、好懂的Svelte实现原理

    简单、好懂的Svelte实现原理

    本文会围绕一张流程图和两个Demo讲解,正确的食用方式是用电脑打开本文,跟着流程图、Demo一边看、一边敲、一边学...

    魔术师卡颂4822021-11-10
  • 编程技术2021年值得关注的React PDF 库

    2021年值得关注的React PDF 库

    今天,许多网络应用程序为其用户提供内置的PDF浏览选项。然而,选择一个并不容易,因为它们的功能远远超过显示PDF。在这篇文章中,我将评估5个React的...

    TianTianUp5232021-06-21
  • 编程技术AIOps,SRE工程师手中的利器

    AIOps,SRE工程师手中的利器

    AIOps开始成为一种极为重要的站点可靠性工程工具。它能够高效吸纳观察数据、参与数据以及来自第三方工具的数据,判断系统运行状态并保证其处于最佳...

    至顶网5972021-03-08
  • 编程技术让开发效率倍增的 VS Code 插件

    让开发效率倍增的 VS Code 插件

    今天来分享一些提升开发效率的实用 VS Code 插件!Better Comments 扩展可以帮助我们在代码中创建更人性化的注释,有不同形式和颜色的注释供我们选择。 ...

    前端充电宝7132022-04-21
  • 编程技术Delphi - Indy idMessage和idSMTP实现邮件的发送

    Delphi - Indy idMessage和idSMTP实现邮件的发送

    这篇文章主要介绍了Delphi - Indy idMessage和idSMTP实现邮件的发送,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...

    JJ_JeremyWu6592020-09-22