newlisp

使用NewLisp设计Key-Value数据库系统

岁酱吖の 提交于 2019-12-09 16:16:28
Lisp是一个很好的语言,最强大的就是其S-表达式,可以说是Lisp能活到今天的唯一一个原因。其次就是函数为基本类型和后来的闭包。当然Lisp也有很大的缺点,即: 一般的设计师难以避免Lisp的缺点。 Lisp有很多方言,很多子系列,可以说百花齐放,也可以说是散沙一盘。这就是Lisp的优点之一,同时也是其缺点之一,但是这些缺点主要是用Lisp的人造成的,而之所以会这样,是因为Lisp太容易滥用了(其缺点正是因为其优点导致的)。 NewLisp是一个非常强大的Lisp实现,也可以称为一个方言,是一个非常简单而又能力十足的方言。你可以用来编写各种脚本、可以用来制作小工具,可以用来设计桌面应用,可以用来设计本地软件、甚至还能胜任大型软件(只要你想,就可以做到)。为什么呢,因为其不但有着十足的灵活性,而且还能极其容易的和其他语言合作,比如你用C语言写底层库,就能在NewLisp中轻易的使用。当然NewLisp有一个致命的缺点: 没有完善的错误信息,一旦出现错误,就如同C++模板一样让你神经失常。 关于这一点,需要NewLisp以后改善,或者是有一个IDE之类的工具提供支持。这是NewLisp不适合设计商业软件的致命原因,再加上本来Lisp就是没多少人用的语言,而且还这么多方言分支,所以目前应该是只适合个人开发了。 项目地址: https://git.oschina.net/nneolc

在NewLisp中实现匿名函数的递归

蓝咒 提交于 2019-12-09 15:35:25
匿名函数在很多语言中的表现形式大概如下: (lambda (n) (* (+ n 1) (- n 1))) 只有参数列表和函数体,而没有名字。在大部分情况下没问题,但是一旦需要用到递归的话,就有点麻烦了,因为不知道如何去递归的调用一个匿名函数。 在学术界中有一些解决这个问题的办法,其中一个就是Y组合子,但是那个太繁琐,而且难以通过宏自动将一个lambda变成可递归形式,没什么好处。 根据历史经验,目前比较好的办法,就是实现一个操作符,匿名函数通过这个操作符来调用自身: (lambda (n) ... (this (- n 1))) 或者是 (lambda (n) ... (lambda (- n 1))) 第一种是用this或其他东西来表示当前匿名函数本身,直接调用就可以递归。第二种是和有名函数一样,用和定义匿名函数一样的操作符来调用自身。 然而第二种不实际,因为这样会造成混乱,比如需要嵌套lambda时,而且其语义也不对。 所以此文主要围绕第一种方式:实现让this指向当前匿名函数,从而可以递归调用自身。 NewLisp是一个Lisp语言的实现,也可以说是一个方言,其与Common Lisp相比,少了很多东西,但远比Common Lisp容易使用。Lisp系列的语言有一个特点:没有语法。或者说极小语法,用Lisp编写程序,直接没有了语法阶段,从语义开始起步,所以非常接近编译器

newLISP你也行 --- 字符串

大兔子大兔子 提交于 2019-12-02 17:52:05
############################################################################# # Name: newLISP你也行 --- 流 # Author: 黄登 ( winger ) # Project: http://code.google.com/p/newlisp-you-can-do # Gtalk: free.winger@gmail.com # Gtalk-Group: zen0code@appspot.com # Blog: http://my.opera.com/freewinger/blog/ # QQ-Group: 31138659 # 大道至简 -- newLISP # # Copyright 2012 黄登 ( winger ) All rights reserved. # Permission is granted to copy, distribute and/or # modify this document under the terms of the GNU Free Documentation License, # Version 1.2 or any later version published by the Free Software Foundation ; #

newLISP你也行 --- 基础知识

 ̄綄美尐妖づ 提交于 2019-12-02 17:51:27
############################################################################# # Name:newLISP你也行 --- 基础知识 # Author:黄登 ( winger ) # Project:http://code.google.com/p/newlisp-you-can-do # Gtalk:free.winger@gmail.com # Gtalk-Group:zen0code@appspot.com # Blog:http://my.opera.com/freewinger/blog/ # QQ-Group:31138659 # 大道至简 -- newLISP # # Copyright 2012 黄登 ( winger ) All rights reserved. # Permission is granted to copy, distribute and/or # modify this document under the terms of the GNU Free Documentation License, # Version 1.2 or any later version published by the Free Software Foundation ; # with no

newLISP你也行 --- newLISP简介

烈酒焚心 提交于 2019-12-02 17:51:15
############################################################################# # Name:newLISP你也行 --- newLISP简介 # Author:黄登 ( winger ) # Gtalk:free.winger@gmail.com # Gtalk-Group:zen0code@appspot.com # Blog:http://my.opera.com/freewinger/blog/ # QQ-Group:31138659 # 大道至简 -- newLISP # # Copyright 2012 黄登 ( winger ) All rights reserved. # Permission is granted to copy, distribute and/or # modify this document under the terms of the GNU Free Documentation License, # Version 1.2 or any later version published by the Free Software Foundation ; # with no Invariant Sections, no Front-Cover Texts,and no