标签: lisp

编译语言可以同音吗?

根据定义,homoiconic这个词的意思是:

代码和数据的相同表示

在LISP中,这意味着您可以使用引用列表并对其进行评估,因此(car list)函数和(cdr list)参数也是如此.这可以在编译时或在运行时发生,但是它需要解释器.

没有编译时解释器的编译语言是否也可能是homoiconic?或者说同性恋的概念仅限于口译员?

lisp compiler-construction scheme interpreter homoiconicity

27
推荐指数
2
解决办法
3757
查看次数

Clojure是否从初学者的角度更接近Scheme或Common Lisp?

如果我想学习Clojure,我应该从学习Scheme或Common Lisp开始吗?

或者Clojure与这两者有什么不同,我应该开始自己学习Clojure?

lisp scheme clojure

27
推荐指数
3
解决办法
5675
查看次数

我如何学习Scheme?

嘿,我是编程的新手.我已经选择了一些非常基本的Java(文件I/O,GUI,继承),并想看看函数式编程 - 特别是,我想学习Scheme.我在查找我能理解的Scheme实现时遇到了一些麻烦.口译员很奇怪; 我不确定如何保存我的程序和创建可执行文件.我已经下载了PLT Scheme,但我更喜欢使用一些不那么居高临下的东西,类似于NetBeans.是否有插件或工具可以让我快速轻松地创建和管理Scheme程序?所有帮助表示赞赏!

lisp scheme

27
推荐指数
3
解决办法
3万
查看次数

"lisp形式"的定义?

究竟是什么定义了"Lisp形式"?

据我所知,它是"一个原子或一个符号作为其第一个元素的列表".

但是,这(在Scheme中)不会是一种形式:

((lambda () 42))  ;; The answer to Life, the Universe and Everything.
Run Code Online (Sandbox Code Playgroud)

因为列表的第一个元素本身就是另一个列表.在评估之后,它将是一个程序(而不是符号).

我可以找到几个不同的网站和教程,讨论Lisp表单,但没有一个提供完整和详细的定义.我在哪里可以找到一个?

lisp scheme

27
推荐指数
2
解决办法
5342
查看次数

我怎样才能简单地"运行"lisp文件

蟒蛇

当我学习Python时,我使用一个很好的gui安装程序在Windows上安装它,所有.py文件都会自动在命令行或资源管理器中运行python.

我发现这非常直观和容易,因为我可以立即制作纯文本文件并运行它们.

口齿不清

我开始学习lisp并且(从评论中)决定SBCL不是一个糟糕的lisp实现.

有没有办法设置SBCL像Python一样轻松运行.lisp文件?

是否有其他具有此功能的lisp实现?

lisp windows sbcl file-association

27
推荐指数
2
解决办法
2万
查看次数

什么时候出现宏(用户定义的代码转换)?

我读过McCarthy 1960年关于LISP的论文,没有发现任何与用户定义的宏或正常的订单评估相似的内容.我想知道宏首次出现在编程语言历史中(以及Lisp历史中):

  • 什么时候首先描述(理论上)用户定义的代码转换(在解释或编译之前)?
  • 第一个使用类似Lisp的宏的编程语言实现是什么("Lisp-like"是指"使用可读的图灵完整语言进行代码转换")?(包括非Lisps - 例如Forth已经很老了,但我不确定第一个Forth实现是否已经"IMMEDIATE")
  • 其中哪一个是第一个高级编程语言(排除汇编语言......)
  • 拥有宏的第一个Lisp方言是什么?

谢谢!

lisp macros scheme history racket

27
推荐指数
3
解决办法
1742
查看次数

emacs lisp使用glob扩展列出文件

是否有任何库或函数为emacs lisp执行类似bash的glob扩展?

例如:

(directory-files-glob "~/Desktop/*")
> ("/home/user/Desktop/file1" "/home/user/Desktop/file2")
Run Code Online (Sandbox Code Playgroud)

如果没有这样的功能,是否有任何关于如何实施它的提示/建议?

编辑:

我在文档中发现了一个非常有用的函数:

file-expand-wildcards:此函数扩展通配符模式模式,返回与其匹配的文件名列表.

lisp elisp

27
推荐指数
3
解决办法
3454
查看次数

如何增加或减少Common Lisp中的数字?

增加/减少数字和/或数字变量的惯用 Common Lisp方法是什么?

lisp common-lisp increment decrement

27
推荐指数
1
解决办法
2万
查看次数

如何将clojure/lisp程序建模为图表?

我已经尝试将我的clojure图表嵌入到UML中可用的内容中,使用类块作为文件级命名空间和依赖关系链接来显示关系,但它很尴尬并且往往会阻碍功能模式.我也尝试过开发ad-hoc解决方案,但是我发现一个解决方案和Java一样好用Java(简单有向图似乎工作模糊,但结果不详细足够).此外,我在网上找不到任何关于此的内容.

为了清楚起见,我并没有尝试像代码生成那样做任何事情; 我只是为了自己的利益而谈论纸笔图.我假设我不是第一个考虑使用lisp语言的人.

提出了哪些解决方案?有没有常用的标准?您有什么推荐的吗?你用什么工具?

lisp diagram clojure

27
推荐指数
5
解决办法
2322
查看次数

Clojure头部保留

我正在读O'Reilly的Clojure Programming book.

我找到了头部保留的例子.第一个例子保留对d(我推测)的引用,因此它不会收集垃圾:

(let [[t d] (split-with #(< % 12) (range 1e8))]
    [(count d) (count t)])
;= #<OutOfMemoryError java.lang.OutOfMemoryError: Java heap space>
Run Code Online (Sandbox Code Playgroud)

虽然第二个例子不保留它,但它没有问题:

(let [[t d] (split-with #(< % 12) (range 1e8))]
    [(count t) (count d)])
;= [12 99999988]
Run Code Online (Sandbox Code Playgroud)

我没有得到的是在哪种情况下保留了什么以及为什么.如果我试着回来[(count d)],就像这样:

(let [[t d] (split-with #(< % 12) (range 1e8))]
    [(count d)])
Run Code Online (Sandbox Code Playgroud)

它似乎创造了相同的内存问题.

此外,我记得count在每种情况下都会实现/评估一个序列.所以,我需要澄清一下.

如果我(count t)首先尝试返回,那么如果我根本不返回它会如何更快/更高效?在哪种情况下保留了什么?为什么?

lisp jvm functional-programming clojure

27
推荐指数
2
解决办法
1803
查看次数