Questions tagged «lisp»

Lisp是一种基于lambda演算的通用功能编程语言(家族),具有将源代码作为数据结构进行操作的能力。

1
如何在功能编程语言中实现分支定界?
我试图在所有函数f的集合上写一个分支和边界搜索:D-> R,其中域大小很小(| D |〜20),范围更大(| R |〜2 ^ 20 )。最初,我想出了以下解决方案。 (builder (domain range condlist partial-map) (let ((passed? (check condlist partial-map))) (cond ((not passed?) nil) (domain (recur-on-first domain range condlist partial-map '())) (t partial-map)))) (recur-on-first (domain range condlist partial-map ignored) (cond ((null range) nil) (t (let ((first-to-first (builder (cdr domain) (append ignored …

3
在通往启蒙的道路上:计划,常见的Lisp,Clojure?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 8年前关闭。 当我学习Lisp时,许多比我聪明的人会继续写书,因为您“了解它”,它使您成为更好的程序员。 也许我所听到的有关Lisp改变生活的所有信息只是对新手的一个恶作剧,但我认为了解更多关于世界的信息并没有什么害处,即使我发现我是在被sn口之类的东西之后被送去的。 我想遵循SICP或ANSI Common Lisp的规定,但同时要研究可以继续用于个人项目的方言和实现。 SICP专注于Scheme,因此这是一大票。保罗·格雷厄姆(Paul Graham)说,如果他要教新手,他会在Scheme中做,但是听起来Scheme仍然不及Common Lisp。但是接下来是Clojure了-有人告诉我Clojure在某些方面受到限制,但是在其他方面(JVM库)更实用。 听起来我可以更轻松地阅读Scheme的材料,或者从CL那里获得“真正的”启发,或者与Clojure足够接近,并且从长远来看可以做更多的事情。 所有这些中有多少是正确的?我什么时候应该停止思考要学习的内容而只是去学习呢?

5
为什么Lisp社区更喜欢在函数末尾累积所有括号?
为什么Lisp社区更喜欢在函数末尾累积所有括号: (defn defer-expensive [cheap expensive] (if-let [good-enough (force cheap)] good-enough (force expensive))) 为什么不采用C或Java这样的约定? 好吧,Lisp比这些语言要古老得多,但是我说的是当代的Lispers。 (defn defer-expensive [cheap expensive] (if-let [good-enough (force cheap)] good-enough (force expensive) ) ) 注意:代码段摘自《 Clojure的喜悦》一书。


6
Lisp宏有多有用?
Common Lisp允许您编写执行所需源转换的宏。 Scheme为您提供了一个卫生的模式匹配系统,您还可以执行转换。宏在实践中有多有用?保罗·格雷厄姆(Paul Graham)在击败平均水平中说: Viaweb编辑器的源代码大概是20-25%的宏。 人们实际上最终会用宏做什么事情?
22 lisp  scheme  macros 

3
是否有关于函数式编程概念的规范教程或书籍?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 5年前关闭。 来自过程/ OO编程的背景,我倾向于以过程的方式编写Scheme程序。我将以一种功能性的方式从头开始学习Scheme或Lisp,从而重新设置程序员的思维。 是否有教程或书籍是事实上的标准,用于描述有关函数式编程概念的最佳实践,设计方法和其他有用信息?那本书使它与众不同吗?

4
那么,LISP如何使宏系统的实现变得更容易呢?
我正在从SICP学习Scheme,给人的印象是,使Scheme以及LISP特别与众不同的很大一部分是宏系统。但是,由于宏是在编译时扩展的,所以人们为什么不为C / Python / Java /任何东西制作等效的宏系统?例如,可以将python命令绑定到expand-macros | python或任何其他内容。该代码对于不使用宏系统的人仍然可以移植,只是在发布代码之前扩展宏即可。但是除了C ++ / Haskell中的模板之外,我不知道其他类似的东西,我收集的模板并不完全相同。那么,LISP又如何使实现宏系统更容易呢?

3
LISP的宏在哪些方面比Ruby的创建DSL的“能力”更好?
使Ruby发光的一件事是能够更好地创建特定于域的语言,例如 西纳特拉 规格 耙 Ruby on Rails的ActiveRecord 尽管可以通过宏在LISP中复制这些库,但我认为Ruby的实现更为优雅。尽管如此,我认为在某些情况下LISP的宏可以比Ruby的宏更好,尽管我想不到。 那么,LISP的宏在哪一个领域比Ruby创建DSL的“能力”(如果有)更好? 更新 我之所以这样问,是因为现代编程语言正在接近LISP的奇点,例如 C获得了宏扩展预处理器,尽管非常原始并且容易出错 C#具有属性(尽管这是只读的),通过反射公开 Python增加了装饰器,尽管感觉很有限,但它可以修改函数的行为(以及v 3.0的类)。 Ruby TMTOWTDI,如果应用得当,则可以使用Ruby方式制作精美的DSL。 我想知道LISP的宏是否仅适用于特殊情况,而其他编程语言功能是否强大到足以提高抽象度来应对当今软件开发中的挑战。
21 ruby  lisp  dsl 


19
具有类似Lisp的语法扩展机制的编程语言
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我对Lisp的了解有限(尝试在业余时间学习一些知识),但据我了解,Lisp宏允许通过在Lisp本身中进行描述来引入新的语言结构和语法。这意味着可以将新构造作为库添加,而无需更改Lisp编译器/解释器。 这种方法与其他编程语言完全不同。例如,如果我想用一种新的循环或某种特定的习惯来扩展Pascal,则必须扩展该语言的语法和语义,然后在编译器中实现该新功能。 Lisp家族之外是否还有其他编程语言(即Common Lisp,Scheme,Clojure(?),Racket(?)等)提供了类似的在语言本身内扩展语言的可能性? 编辑 请避免进一步讨论,并在回答中要具体。我希望从概念的角度来理解一堆专门针对Lisp宏作为扩展机制的东西,以及哪些非Lisp编程语言可以提供某种概念,而不是一堆可以以某种方式进行扩展的编程语言的清单。靠近他们。

2
Lisp宏的典型应用是什么?
我正在尝试学习一些LISP,并且已经阅读了很多有关LISP宏的重要性的信息,因此我想获得一些有关它们的工作经验。 您能否建议一个实际的应用程序领域,使我可以使用宏来解决实际问题,并理解该编程结构的有用性? 注意 这不是通用的下一个问题我应该做什么项目。我有兴趣了解通常通过LISP宏解决哪些类型的问题。例如,它们对实现抽象数据类型有好处吗?为什么将这种构造添加到语言中?它解决了哪些无法通过简单功能解决的问题?

4
Python装饰器和Lisp宏
在查看Python装饰器时,有人声明,它们与Lisp宏(尤其是Clojure)一样强大。 看一下PEP 318中给出的示例,在我看来,它们只是在Lisp中使用普通的旧高阶函数的一种奇特方式: def attrs(**kwds): def decorate(f): for k in kwds: setattr(f, k, kwds[k]) return f return decorate @attrs(versionadded="2.2", author="Guido van Rossum") def mymethod(f): ... 在任何示例中都没有看到任何代码转换,如Clojure Macro的解剖中所述。另外,Python缺少同源性 可能使代码转换变得不可能。 那么,这两个如何比较,您能说他们在做事上大致相等吗?证据似乎与此相反。 编辑:根据评论,我正在寻找两件事:比较“功能强大”和“易于处理”。
18 python  lisp  clojure  macros 

2
IronScheme是否完整或稳定到值得学习?
维基百科上提到IronScheme是失败项目IronLisp的继承者,该项目将Lisp引入CLR和.NET,就像Clojure为JVM所做的那样。有人有使用这种语言的经验吗?它看起来相当完整(99%),但是我不确定如何判断是否值得花时间摆弄它。稳定或完整,我的意思是将其用于实际项目,而不仅仅是摆弄工具和Project Euler风格问题。
17 .net  lisp  scheme  clr 

5
XSLT和可能的替代品
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 6年前关闭。 我看过XSLT,它可以将一个XML文件转换为另一个XML文件(HTML等)。现在,尽管我看到XSLT(作为一种标准化且使用过的工具)有很多好处,但出于以下几个原因,我还是不愿意 XSLT处理器似乎非常庞大/资源匮乏 XML对于编程来说是一个糟糕的表示法,这就是XSLT的全部含义。 它不想在这里拖拉XSLT,尽管我只是想指出我不喜欢XSLT的原因,以使您了解我对替代产品的期望。 有一些Lisp背景知识,我想知道是否有一些基于Lisp的树结构转换的更好方法。我看到过对DSSSL的引用,可悲的是,大多数关于DSSSL的链接都已失效,因此查看一些说明它的代码已经具有挑战性。是否仍在使用DSSSL?我记得在签出docbook内容时我曾经安装过openjade。 Jeff Atwood的博客文章似乎暗示使用Ruby而不是XSLT。 在非xml编程语言中,是否有任何明智的方式来进行类似于XSLT的XML转换?我愿意接受输入 有用的脚本语言库,可促进XML转换 特别是(但不限于)类似Lisp的转换语言或Ruby等。 到目前为止,我发现了一些东西: 网上有几个地方指出Linq是一种可能的选择。通常,我会进行任何类型的分类,也包括那些拥有最佳XSLT经验的分类。 对于方案http://cs.brown.edu/~sk/Publications/Papers/Published/kk-sxslt/和http://www.okmij.org/ftp/Scheme/xml.html
15 xml  lisp  linq  xslt 

5
AI的最新编程语言?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 5年前关闭。 几十年来,用于AI的编程语言选择是Prolog或LISP,还有其他一些不太知名的语言。它们大多数是在70年代之前设计的。 在其他许多领域特定的语言上发生的变化很多,但是在AI领域却没有Web特定语言或脚本等出现那么多。 是否有最新的编程语言旨在改变AI中的游戏并从以前的语言中学习不足?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.