newlisp

Windows で使う場合
Windoows用のインストーラからインストールすると、newLISP のIDE用のアイコンが出来るのでそこから使ってもいいし、コマンドプロンプトで newlisp と入力して実行してもいい。 コマンドプロンプトからの利用で、複数行の記述をしたい場合は、
[cmd]
(set 'a "a" 'b "bbb")
(+ 1 2 3)
[/cmd]
といった風に [cmd] [/cmd] で挟んで記述する。 newLISP のIDEを使う場合、上がエディタ(コード)で下がプロンプトになる。[ALT]+R でコードを実行する。
情報源など
- 本家サイト(英語) : http://www.newlisp.org/
- 新リスプな日々 Johu's さんのブログ (日本語) : http://johu02.wordpress.com/
- 舌足らずなブログ : newLISP基礎文法最速マスター
- 紫藤のwiki(日本語) : http://sites.google.com/site/shidoinfo/Home/programing-lang/%E9%96%A2%E6%95%B0%E5%9E%8B%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E/lisp/%E6%A7%98%E3%80%85%E3%81%AAlisp%E6%96%B9%E8%A8%80/newlisp
- newLISP ファンクラブフォーラム (英語) : http://newlispfanclub.alh.net/
- unbalanced-parentheses (英語) : http://unbalanced-parentheses.nfshost.com/
- neglookさんのShell Games (色々と動画があります) : http://www.neglook.com/index.cgi?page=Shell_Games
- (archive 'newLISPer) : http://newlisper.wordpress.com (parentheses.nfshost.com のアーカイブだそうです。更新されてないけど有益な情報かもしれません。)
- Dragonfly (newLISP なweb framework だそうです) : http://www.rundragonfly.com
基本的なところ
- コメントは ";" か "#" を利用可能。複数行のコメントはない。
- リスト、シンボル、lambda、式 があるよ。
- リストの例
- '() … 空リスト
- '(3) … 整数
- '("こんにちは" "三河屋です") … 文字列2つのリスト
- '("こんにちは" 2 opt) … 文字列と整数とシンボルのリスト
- '((a b c) (1 2 3)) … リスト2つのリスト
- '("こんにちは" "三河屋です") … 文字列2つのリスト
- ドット対はないよ
(list 'a 'b)
> (a b)
- car, cdr はないよ。代わりに first(≒ car)、rest(≒ cdr)
- シンボルの例
- (set 'text "こんちは") … シンボルに値を割り当て
- text → "こんちは" … シンボルを評価すると"こんちは"
- mirrorman → nil … 未定義のシンボルを評価すると nil
- (set 'opt1 true 'opt2 nil) … opt1をtrue、opt2 を nil に。
- true → true … true の評価は true (ブーリアンの true)
- nil → nil … nil の評価は nil (ブーリアンの false)
- lambda 式 … あるよ
(set 'f (lambda (n) (+ n n)))
=> (lambda (n) (+ n n))
- fn はlambdaの代わりに使えるよ
(set 'f (fn (n) (+ n n)))
=> (fn (n) (+ n n))
- lambda はシンボルじゃなくて、特別なリスト扱い
(length (lambda (n) (+ n n)))
> 2
(first (lambda (n) (+ n n)))
> (n)
- lambda 式は無名関数として使われるよね
(apply (lambda (n) (+ n n) '(123))
> 246
(map (lambda (n) (+ n n) '(1 2 3))
> (2 4 6)
- シンボルに lambda 式を定義して関数として使えるよね
(set 'double (lambda (n) (+ n n))
> (lambda (n) (+ n n)
(double 123)
> 246
- もうちょっと短かく
(define (doudle n) (+ n n))
> (lambda (n) (+ n n)
(double 123)
> 246
真・偽
- 真になるもの: 偽になるもの以外。 0や"" 空文字も真。
- 偽になるもの: nil、() 空リスト。
シンボルと関数の命名規則
- 変数シンボルは、次の文字から始まってはならない:
- # ; " ' ( ) { } . , 0 1 2 3 4 5 6 7 8 9
- + または - で始まる変数シンボルは、二文字目に数字を使うことはできない。
- 変数名の内部には、以下の文字を除く、どんな文字も許される:
- " ' ( ) : , 半角スペース
- これらは、変数シンボルの終りを意味する。
- [(左角括弧)で始まり、](右角括弧)で終わるシンボルは、右角括弧を除くどんな文字を含んでもよい。
- newLISP では適正なシンボル名の例
myvar
A-name
X34-zz
[* 7 5 ()};]
[俺]
*111*
日本語
- set-locale で現在のロケールを調べたり、変えられたりする。日本の場合、小数点の記号は標準と一緒の"."。
(set-locale "JPN")
> ("Japanese_Japan.932" ".")
(set-locale "DEU")
> ("German_Germany.1252" ",")
- newLISP の UTF-8 対応バージョンにするとUTF8関連の関数が使える。
以下、例
(utf8len "おれはジャイアン")
> 8 ; utf8じゃない長さだと
(length "おれはジャイアン")
>24
- UTF-8 対応バージョンは、別配布なので別途DLして差し替えて(あるいはUTF-8用でインストールして)使う。
newlisp的更多相关文章
- newLISP 10.5.3 发布,类 Lisp 的脚本语言
newLISP 10.5.3 修复了一些 bug ,为 KMEANS 集群分析器增加了一些函数. newLISP是一个类似Lisp语言的.用于一般用途的脚本语言.它具有 LISP 语言所有的魔力,但更 ...
- 改进的newlisp编译脚本,只需要配置
前面有一篇Say bye to CMake and Makefile我开始用自己编写的newlisp脚本替代CMake,今天对前面的进行改进. 改进部分是: 1. newlisp armory模块的引 ...
- 用newLISP读取Hive的元数据
思想是通过调用hive -e命令,然后解析返回的结果. 以下的hive.lsp文件是一个样例,提供了读取本地hive数据库名称.表名,表结构和依据hive表的创建语句生成相应的MySQL的创建语句. ...
- newlisp 注释生成文档
最近写了一个newlisp_armory库,用来实现一些newlisp自身不支持的操作.比如跨windows和ubuntu的目录拷贝功能等. 自己用的时候,发现没有API reference文档参考, ...
- newlisp 接受jenkins带空格的参数
jenkins有一个参数text种类,它能够以文本的段落拷贝作为参数 newlispThe program receives parameters are separated by spaces, 更 ...
- MapReduce 规划 系列的12 使用Hadoop Streaming技术集成newLISP文字
本文example6环境与前Hadoop 1.x异,于Hadoop 2.x环境测试. 功能与前面相同的日志处理程序. 第一newLISP文字,游玩mapper任务.于stdin读取文本数据,将did由 ...
- crontab演出newLISP脚本设置环境变量
今天遇到一个问题.执行在终端newLISP文字,一切正常,搬去crontab在将无法正常工作.即使crontab -e命令是在同一个用户执行.还是有问题. 因为newLISP脚本使用hive和hado ...
- 使用newLISP由SMTPserver发送电子邮件
直接使用的标准模块smtpx.lsp, smtp.lsp你可以不设置port,庭审后,没用. 以下是一个示例代码: #!/usr/bin/newlisp (set 'debug-flag true) ...
- newlisp获得bash该命令的退出状态
newlisp exec你可以运行bash命令.但如何返回状态来运行它? 特别是,我需要监控hdfs dfs -test 结果返回.经过一番摸索,我发现了一个简单的答案: #!/usr/bin/new ...
- Ubuntu 14.04 编译newLISP 10.6.0
1. 确保安装了gcc4.8.2 2. 安装须要的库: apt-get install libreadline6 libreadline6-dev 3. 下载并解压newLISP源码,这个不多说了,去 ...
随机推荐
- SSH2——filter过滤器
概述: 过滤器是Servlet2.3以上新添加的一个功能,其技术也是很强大的.通过Filter技术能够对WEBserver的文件进行拦截,从而实现一些特殊的功能. 在JSP开发应用中也是必备的技能之中 ...
- WPF使用RoutedCommand自己定义命令
主要代码例如以下所看到的: /// <summary> /// 声明并定义命令. /// </summary> RoutedCommand ClearCommand = new ...
- 【SqlServer系列】语法定义符号解析
1 概述 在数据库函数定义中,经常用到这些符号:<>,::=,[],{},|,..,(),!! .这篇文章简要概述这些符号. 2 具体内容 2.1 <> < ...
- Shell编程实践之批量安装JDK
实验环境 只有两台机子,一台虚拟机192.168.1.200,另外一台物理机192.168.1.201. 目标 执行一个shell脚本,给这两台机子自动安装jdk. 实验步骤 1.自动设置ssh免密码 ...
- String、StringBuilder和StringBuffer类
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- Django项目创建02
Django项目创建(ubuntu环境) 1. 创建项目目录,我是在root下创建了一个workspace文件夹:mkdir workspace 然后cd到该目录下 命令:django-adm ...
- mysql版本升级
环境 mysql安装在centos上,需要升级. mysql的版本是 mysql> select version(); +-----------+ | version() | +-------- ...
- web.xml文件--编码注意事项
写在前面: 最近发布项目的时候,要修改web.xml文件的内容,然后我在本机的web.xml文件中是有注释的,但是到了服务器上面,就说编码不同.我也没有怎么注意.就继续启动服务器,但是访问网站,一直报 ...
- bzoj 4813: [Cqoi2017]小Q的棋盘
Description 小Q正在设计一种棋类游戏.在小Q设计的游戏中,棋子可以放在棋盘上的格点中.某些格点之间有连线,棋子只能 在有连线的格点之间移动.整个棋盘上共有V个格点,编号为0,1,2-,V- ...
- mysql 计算生日
生日(DATE) 计算方法1: YEAR(CURDATE())-YEAR(birthday)-(RIGHT(CURDATE(),5)<RIGHT(birthday,5)) 计算方法2: year ...