Clojure 一种语言是LISP方言意味着什么?

Clojure 一种语言是LISP方言意味着什么?,clojure,lisp,Clojure,Lisp,有Clojure、Scheme等,它们是LISP的方言,您可以在上找到更多 我的问题很基本-什么是LISP方言?像C、C++、java、JavaScript、PHP这样的语言共享相似的语法,但它们是不同的语言。人们不称他们为阿尔戈语的不同方言。那么为什么人们称这些方言为LISP呢?这到底是什么意思?我建议您从开始,它说 在Lisp世界中,大多数使用基本S表达式语法和类似Lisp的语义的语言都被视为Lisp方言,尽管它们差异很大,比如说Racket和Clojure 我要说的是,Lisp方言必须符合

有Clojure、Scheme等,它们是LISP的方言,您可以在上找到更多


我的问题很基本-什么是LISP方言?像C、C++、java、JavaScript、PHP这样的语言共享相似的语法,但它们是不同的语言。人们不称他们为阿尔戈语的不同方言。那么为什么人们称这些方言为LISP呢?这到底是什么意思?

我建议您从开始,它说

在Lisp世界中,大多数使用基本S表达式语法和类似Lisp的语义的语言都被视为Lisp方言,尽管它们差异很大,比如说Racket和Clojure

我要说的是,Lisp方言必须符合最基本的Lisp理念,具体来说,简单的任务应该是容易的,困难的任务应该是可能的

这通常意味着语言应该是可扩展的,照此看来,它应该增长以满足您的需要。这将提示宏的方向,允许扩展语言语法。这反过来要求原始语法应该相对简单,低,可能是基于Sexp的

所以,对我来说,Lisp方言的特点是

  • 一个强大的宏工具(IOW,编译时代码转换的完整语言)和
  • 简单的语法

请注意,根据一些人的说法,Scheme是Algol的方言,所以这不是一个严格的概念。

我建议您从开始,它说

在Lisp世界中,大多数使用基本S表达式语法和类似Lisp的语义的语言都被视为Lisp方言,尽管它们差异很大,比如说Racket和Clojure

我要说的是,Lisp方言必须符合最基本的Lisp理念,具体来说,简单的任务应该是容易的,困难的任务应该是可能的

这通常意味着语言应该是可扩展的,照此看来,它应该增长以满足您的需要。这将提示宏的方向,允许扩展语言语法。这反过来要求原始语法应该相对简单,低,可能是基于Sexp的

所以,对我来说,Lisp方言的特点是

  • 一个强大的宏工具(IOW,编译时代码转换的完整语言)和
  • 简单的语法

注意,根据一些人的说法,Scheme是Algol的一种方言,所以这不是一个严格的概念。

只有一些语法。我们有Algol,它涵盖了几乎所有的编程语言,如SQL、Python、Pascal、PHP和JavaScript。有些人可能会说其中大部分是C或B,他们是对的,因为他们是第一个用
{
。查看您的个人资料,您知道的大部分是阿尔戈方言,当您学习最后一种方言时,可能很简单,因为您已经从他们兄弟语言的知识中了解了很多。您没有学习新的语言,而是已经知道的语言的变体

Lisp出现在50年代后期,它有符号和列表。它的语法不是基于Fortran,Fortran是当时的首选语言。最初的论文使用一些原语表达了
eval
。你可以在Paul Grahams中读到这一点。如果你知道一种方言,那么用与algol方言相同的方式学习另一种方言同样容易s、 试图通过同化algol来学习lisp方言对我来说是非常令人沮丧的,所以我从经验中了解到这一点

维基百科有一个很好的工具,你可以浏览。就像在自然语言中一样,你有疯狂的语言,比如Finish,这在欧洲语言树上是找不到的。在编程语言中也有这样的孤岛。Lisp和Algol是真正不同的世界,即使几十年来受到了一些影响

关于lisp方言需要什么的答案,有点模糊,但我会包括所有具有以下特征之一的语言:

  • 全括号波兰语前缀表示法。(S表达式)

  • cons
    car
    cdr
    以及功能为头等公民的符号类型。例如,您可以创建
    mapcar
    map
    在方案中)

  • 当然,一个不可否认的Lisp方言将兼有这两种语言,但我也会考虑每种语言中只有一种是LISP。 是具有更好(lisp)语法的英特尔汇编。它可能可以扩展宏并使用Scheme的功能,因此它是一个lisp,但受到限制,因此并非所有人都将其视为lisp方言


    JavaScript的创建者布兰登·艾奇最初想制作一个方言方案。JavaScript非常接近LISP,但我仍然不认为它是LISP,因为它没有我的LISP特征集。如果他们制作了一个单链表,一部分规格我就会认为它是一个LISP方言,语法很差。她的人可能会将JS作为lisp来使用。

    这里只有一些语法。我们有Algol,它涵盖了几乎所有的编程语言,如SQL、Python、Pascal、PHP和JavaScript。有些人可能会说其中大部分是C或B,他们是对的,因为他们是第一个用
    取代典型的
    开始
    {
    。查看您的个人资料,您知道的大部分是阿尔戈方言,当您学习最后一种方言时,可能很简单,因为您已经从他们兄弟语言的知识中了解了很多。您没有学习新的语言,而是已经知道的语言的变体

    Lisp出现在50年代后期,它有符号和列表。它的语法不是基于Fortran,Fortran是当时的首选语言。最初的论文使用一些原语表达了
    eval
    。你可以在Paul Grahams中读到这一点。如果你知道一种方言,那么用与algol方言相同的方式学习另一种方言同样容易s、 努力学习口齿不清