首页
学习
活动
专区
工具
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训练过的模型部署生产中。

1.6K40
  • 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.9K30

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

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

    1.4K10

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

    不管是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这门不完美的语言同样可以编写出优雅的函数式代码

    81870

    用 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

    1K40

    不同编程语言的“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也可以用于服务器端编程。

    47520

    如何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.4K01

    近 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也可以用于服务器端编程。

    50320

    编程语言发展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也可以用于服务器端编程。

    64120

    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.2K20

    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.3K10

    编程语言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也可以用于服务端的开发。

    81110

    Linux 移植 M1 Mac 真的太难了!

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

    3K20

    惊呆了,老外竟然用50中编程语言写“Hello,Word!”,我服了...

    它是 Lisp 语言的 3 大变种之一,另外两个变种 Common LispClojure 的诞生要晚得多。 (display "Hello, World!")...Common Lisp - 1984 年 Common Lisp 通常简写为 CL,是由 ANSI 标准化了的 Lisp 语言规范。 (princ "Hello, World!") 19....在 1990 年,John Ousterhout 开发出了 Tcl 的一个扩展,叫做 Tk,它是一个用于创建可移植图形接口的代码库。...Clojure 可转换为 Java 字节码、JavaScript 代码和.NET 字节码。因此,Clojure 可以在 JVM、CLR、浏览器和 Node.js 上使用。...目前,Dart 还没有达到它的目标,开发人员更喜欢 Dart 转换成与现代所有浏览器兼容的 JavaScript 代码,Dart 还可以用于服务端编程。

    78520

    一个纯本地应用移植 Web 端

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

    1.9K20
    领券