首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

将Common Lisp代码移植到Clojure

将Common Lisp代码移植到Clojure需要考虑两种编程语言之间的差异。Common Lisp是一种通用的、动态的、多范式的编程语言,而Clojure是一种现代的、函数式的编程语言,它基于Java虚拟机(JVM)运行。

在将代码从Common Lisp移植到Clojure时,需要注意以下几点:

  1. 语法差异:Common Lisp和Clojure的语法有很大的不同,因此需要对代码进行重写以符合Clojure的语法规则。
  2. 数据结构差异:Common Lisp和Clojure的数据结构有所不同,例如Clojure中的列表是不可变的,而Common Lisp中的列表是可变的。因此需要对代码中的数据结构进行调整。
  3. 函数差异:Common Lisp和Clojure的函数库也有所不同,因此需要对代码中的函数进行替换或重写。
  4. 并发模型差异:Clojure是基于STM(Software Transactional Memory)的并发模型,而Common Lisp则是基于多线程的并发模型。因此需要对代码中的并发模型进行调整。
  5. 性能差异:由于Clojure是基于JVM运行的,因此其性能可能会低于Common Lisp。因此需要对代码进行性能调优。

总的来说,将Common Lisp代码移植到Clojure需要对代码进行重写、调整和优化,以符合Clojure的语法、数据结构、函数库、并发模型和性能要求。在这个过程中,可以使用许多Clojure的库和框架来简化开发过程,例如:

  • Clojure的标准库,提供了许多常用的函数和数据结构。
  • Clojure的第三方库,例如:core.async、clojure.data.csv、compojure、hiccup等,可以帮助开发者更快速、更轻松地开发应用程序。
  • Clojure的框架,例如:Ring、Compojure、Luminus、Re-frame等,可以帮助开发者更快速、更轻松地构建Web应用程序。

总之,将Common Lisp代码移植到Clojure需要开发者具备一定的编程经验和技能,以及对两种编程语言的语法、数据结构、函数库、并发模型和性能要求的深入了解。在这个过程中,可以使用许多Clojure的库和框架来简化开发过程,提高开发效率和代码质量。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Pytorch模型移植C++详细教程(附代码演练)

说明 在本文中,我们看到如何Pytorch模型移植C++中。Pytorch通常用于研究和制作新模型以及系统的原型。该框架很灵活,因此易于使用。...主要的问题是我们如何Pytorch模型移植更适合的格式C++中,以便在生产中使用。 我们研究不同的管道,如何PyTrac模型移植C++中,并使用更合适的格式应用到生产中。...traced_cell.code 提供了更多的python语法解释代码。...2) TorchScript为我们提供了一种表示,在这种表示中,我们可以对代码进行编译器优化,以提供更高效的执行。 ONNX(开放式神经网络交换) ONNX是一种开放格式,用于表示机器学习模型。...我们试图简单地解释一下,我们可以用不同的方式PyTorch训练过的模型部署生产中。

78340

Clojure与LispClojure与Lisp

(艾伦·凯) "任何C或Fortran程序复杂一定程度之后,都会包含一个临时开发的、只有一半功能的、不完全符合规格的、到处都是bug的、运行速度很慢的Common Lisp实现。"...你可以用几百行甚至几十行Clojure代码取替代几千行静态语言 的代码,伴随着这而来的是bug数量的减少和开发时间的缩短. 样板代码(Boilerplate code )被完全删去....但是没有改变lisp中 "代码也是数据" 的哲学. Clojure 语言在直觉和观感上比历史上的lisp更易于阅读....1984年,改良自MacLisp、集各版本大成、跨平台、且被目为事实标准的Common Lisp诞生。至1994年,美国国家标准学会(ANSI)对Common Lisp语言进行了标准化。...自稳定运行的Common Lisp出现起,再有各机构按各自所需而开展后续Lisp,包括1990年来自欧洲用户的EuLisp、运行于Java虚拟机的Clojure、受到Maclisp影响而创的Emacs

1.8K30

Clojure 学习入门(1)—— 学习资料

Clojure可以执行于Java虚拟机(JVM)、通用语言运行时(CLR),以及JavaScript引擎之上。与其他Lisp一样,Clojure认为代码即数据,同时有复杂的宏系统。...Clojure 是完全的,真正意义上的神圣的lisp语言的一个方言。 lisp语言因为其无以伦比强大能力和几乎无穷的表达力而获得了盛誉,Clojure自然也不例外。...你可以用几百行甚至几十行Clojure代码取替代几千行静态语言的代码,伴随着这而来的是bug数量的减少和开发时间的缩短。 样板代码(Boilerplate code )被完全删去....但是没有改变lisp中 "代码也是数据" 的哲学. Clojure 语言在直觉和观感上比历史上的lisp更易于阅读....在后面开始学习的初级阶段,你就发现虽然 仍有各种括号,但是代码是难以置信的容易读和写。 对于那些熟悉lisp语言的人来说,他们很快就会发现他们非常适应Clojure.

1.3K10

别忙着撒欢儿了,送你一本《前端函数式攻城指南》可好?

不管是Google力推的Go、学术派的Scala与Haskell,还是Lisp的新方言Clojure,这些新的函数式编程语言都越来越受到人们的关注。...不仅如此,还有一些能编译成JavaScript的语言,能让前端的函数式编程发挥极致,例如Haskell的PureScript、Scala的Scalajs、Clojure的ClojureScript。...我两次都以Clojure结尾,是因为我喜欢把重点留到最后。Clojure独特于其他语言,它既是一门新的语言、一门函数式编程范式的语言,又流淌着古老的血液——Lisp。...有趣的是,ClojureScript的作者把ClojureScript的不可变(Immutable)数据结构移植到了JavaScript,这彻底 JavaScript 的函数式编程提升到了用其他库都完成不了的新高度...这一切的一切,都让我忍不住要帮Fogus出一本续集 用JavaScript实现其他函数式编程语言如Clojure甚至是Haskell的奇技淫巧,让大家进一步感受用JavaScript这门不完美的语言同样可以编写出优雅的函数式代码

78670

用 350 行代码从零开始, Lisp 编译成 JavaScript

我们将会在本篇文章中看到从零开始实现的编译器,简单的类 LISP 计算语言编译成 JavaScript。完整的源代码在 这里。...我们将会: 自定义语言,并用它编写一个简单的程序 实现一个简单的解析器组合器 为该语言实现一个解析器 为该语言实现一个美观的打印器 为我们的用途定义 JavaScript 的一个子集 实现代码转译器,代码转译成我们定义的...但为了实现这个功能,我们需要实现 JSExpr ,并从这个抽象表示中生成 JavaScript 代码。我们通过递归匹配 JSExpr 实现, JS 代码当作 String 来输出。...我们会: 读取文件 文件解析成 Expr 文件转译成 JSExpr JavaScript 代码发送到标准输出流 我们还会启用一些用于测试的标志位: --e 进行解析并打印出表达式的抽象表示(Expr...用我们的编译器运行第一节的示例,产生的 JavaScript 代码如下: $ runhaskell Lisp.hs example.lsp (function(compose, square, add1

96440

如何awk脚本移植Python【Programming(Python)】

代码代码风格,awk脚本移植Python [图片来源:kris krüg] 脚本是解决问题的有效方法,而awk是编写脚本的出色语言。...我最喜欢的完美移植awk的现代编程语言是Python。 在awk脚本移植Python之前,通常值得考虑一下其原始上下文。...如果您的目标是使通用库更容易awk移植Python,请考虑这样做。但是编写一个循环,使您能够准确地得到特定情况下所需要的内容更容易,也更容易理解(因此也更容易维护)。...在Python中移植awk字段 作为一个示例,让我们《如何用 awk 删除文件中的重复行》中的一行代码转换为 Python。 最初的 awk 是: awk '!...结论: Python 是一个不错的选择 awk脚本移植Python时,通常是在考虑适当的Python代码风格时重新实现核心需求,而不是通过条件/操作对条件/操作进行笨拙的翻译。

1.3K01

不同编程语言的“Hello World”

Cobol是COmmon Business Oriented Language的缩写,它原本是一种用于编写业务应用程序的公共语言。2019年,Cobol仍然广泛应用于银行和保险领域。...这是基于Lisp的三大语言之一,另两种是Common Lisp和最近创建的Clojure。  (display "Hello, World!") (newline) 15....Common Lisp - 1984 Common Lisp,通常缩写为CL,是由ANSI标准化的Lisp语言规范。    (princ "Hello, World!") 19....Clojure可以转换为Java代码、JavaScript代码和. net代码。因此,Clojure可以在JVM、CLR、浏览器和Node.js上使用。...目前,Dart还没有达到它的目标,开发人员的首要任务是Dart转换成与所有现代浏览器兼容的JavaScript代码。Dart也可以用于服务器端编程。

43820

近 50 种花式 “Hello, World”

Cobol是COmmon Business Oriented Language的缩写,它原本是一种用于编写业务应用程序的公共语言。2019年,Cobol仍然广泛应用于银行和保险领域。...这是基于Lisp的三大语言之一,另两种是Common Lisp和最近创建的Clojure。 (display "Hello, World!")...; end Hello; 18 Common Lisp - 1984 Common Lisp,通常缩写为CL,是由ANSI标准化的Lisp语言规范。 (princ "Hello, World!")...Clojure可以转换为Java代码、JavaScript代码和. net代码。因此,Clojure可以在JVM、CLR、浏览器和Node.js上使用。...目前,Dart还没有达到它的目标,开发人员的首要任务是Dart转换成与所有现代浏览器兼容的JavaScript代码。Dart也可以用于服务器端编程。

47820

50种不同编程语言的“Hello, World”,你会写几种?

Cobol是COmmon Business Oriented Language的缩写,它原本是一种用于编写业务应用程序的公共语言。2019年,Cobol仍然广泛应用于银行和保险领域。...这是基于Lisp的三大语言之一,另两种是Common Lisp和最近创建的Clojure。 (display "Hello, World!")...; end Hello; 18 Common Lisp - 1984 Common Lisp,通常缩写为CL,是由ANSI标准化的Lisp语言规范。 (princ "Hello, World!")...Clojure可以转换为Java代码、JavaScript代码和. net代码。因此,Clojure可以在JVM、CLR、浏览器和Node.js上使用。...目前,Dart还没有达到它的目标,开发人员的首要任务是Dart转换成与所有现代浏览器兼容的JavaScript代码。Dart也可以用于服务器端编程。

1.1K20

编程语言发展70年,用50种不同语言输出「Hello World」

Cobol是COmmon Business Oriented Language的缩写,它原本是一种用于编写业务应用程序的公共语言。2019年,Cobol仍然广泛应用于银行和保险领域。...这是基于Lisp的三大语言之一,另两种是Common Lisp和最近创建的Clojure。 (display "Hello, World!") (newline) 15....Common Lisp - 1984 Common Lisp,通常缩写为CL,是由ANSI标准化的Lisp语言规范。 (princ "Hello, World!") 19....Clojure可以转换为Java代码、JavaScript代码和. net代码。因此,Clojure可以在JVM、CLR、浏览器和Node.js上使用。...目前,Dart还没有达到它的目标,开发人员的首要任务是Dart转换成与所有现代浏览器兼容的JavaScript代码。Dart也可以用于服务器端编程。

61620

50 种不同编程语言的“Hello World”,你知道多少?

Cobol是COmmon Business Oriented Language的缩写,它原本是一种用于编写业务应用程序的公共语言。2019年,Cobol仍然广泛应用于银行和保险领域。...这是基于Lisp的三大语言之一,另两种是Common Lisp和最近创建的Clojure。 (display "Hello, World!") (newline) 15....Common Lisp - 1984 Common Lisp,通常缩写为CL,是由ANSI标准化的Lisp语言规范。 (princ "Hello, World!") 19....Clojure可以转换为Java代码、JavaScript代码和. net代码。因此,Clojure可以在JVM、CLR、浏览器和Node.js上使用。...目前,Dart还没有达到它的目标,开发人员的首要任务是Dart转换成与所有现代浏览器兼容的JavaScript代码。Dart也可以用于服务器端编程。

1.1K10

编程语言50年来的变化,我用50种编程语言告诉你“Hello world”怎么写!

它是Lisp三种重要的变种之一,由Common LispClojure共同开发。 (display "Hello, World!") (newline) 15....Common Lisp - 1984 Common Lisp,通常缩写为CL,是ANSI标准化的Lisp语言规范。 (princ "Hello, World!") 19....Clojure - 2007 Clojure是编译型、跨平台的函数式编程语言,它可以安全、简单的开发分布式系统。ClojureLisp的三种主要方言之一。...Clojure可以编译成Java字节码,JavaScript代码或者是.NET字节码,因此它可以运行在JVM、CLR和浏览器上。 (println "Hello, World!") 43....目前,Dart的目标还没有实现,开发人员的首要任务是可以Dart转换成与所有现代浏览器兼容的JavaScript代码。Dart也可以用于服务端的开发。

74310

Linux 移植 M1 Mac 真的太难了!

接下来,让我们共同通过这份报告,快速了解移植 Linux 的痛点所在!...但这个问题未能阻止我们前进,为了操作系统移植一个没有文档记录的平台,第一步要做的就是建立文档记录! 苹果芯片 Macs 的启动方式与传统 PC 完全不同。...因此,它非常适合构建裸金属代码,于是我们将其移植到了 AArch64 和苹果芯片上,并改名为 m1n1。...那么,怎样 Linux 移植一个全新的平台上?当然,在整个过程中,很大一部分需要编写新的驱动程序,但有一些事情需要先完成。我们管这些事情叫做“铺路”。...Asahi Linux 的目标不仅是 Linux 移植苹果芯片上,而且还要以开源社区驱动项目的形式进行,与整个 Linux 社区合作,将我们的工作推送到官方的Linux 内核中。

3K20

一个纯本地应用移植 Web 端

为了避免这种情况发生,我们可以尝试一个纯本地应用移植 Web 端。...如果担心隐私安全问题,应用程序可以启用端端加密。 去年,我开始嫉妒 Web 应用。看看那些应用吧,部署起来那么轻松方便……它们可以那么直截了当地将用户带入应用,用不着麻烦的安装过程。...经过一番研究,做了点技术活儿后,我没有改动整个架构就移植到了 Web 端。 https://app.actualbudget.com/ 这意味着你的所有数据仍会存储在浏览器本地,并且没有网络调用。...我还没有对这个 Web 版本大肆宣传,因为它还没有经过足够的测试,并且有不少内容需要改进,例如采用代码延迟加载技术来加快加载速度。我最担心的是数据存储层。...为了解决这个问题,Actual 每条消息都保留在 IndexedDB 中。当应用程序打开时,它将应用来自本地 IndexedDB 的所有消息以获取最新信息。

1.8K20
领券