Windows で使う場合

Windoows用のインストーラからインストールすると、newLISP のIDE用のアイコンが出来るのでそこから使ってもいいし、コマンドプロンプトで newlisp と入力して実行してもいい。 コマンドプロンプトからの利用で、複数行の記述をしたい場合は、

[cmd]
(set 'a "a" 'b "bbb")
(+ 1 2 3)
[/cmd]

といった風に [cmd] [/cmd] で挟んで記述する。 newLISP のIDEを使う場合、上がエディタ(コード)で下がプロンプトになる。[ALT]+R でコードを実行する。

情報源など

基本的なところ

  • コメントは ";" か "#" を利用可能。複数行のコメントはない。
  • リスト、シンボル、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、() 空リスト。

シンボルと関数の命名規則

  1. 変数シンボルは、次の文字から始まってはならない:

    • # ; " ' ( ) { } . , 0 1 2 3 4 5 6 7 8 9
  2. + または - で始まる変数シンボルは、二文字目に数字を使うことはできない。
  3. 変数名の内部には、以下の文字を除く、どんな文字も許される:
    • " ' ( ) : , 半角スペース
    • これらは、変数シンボルの終りを意味する。
  4. [(左角括弧)で始まり、](右角括弧)で終わるシンボルは、右角括弧を除くどんな文字を含んでもよい。
  • 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的更多相关文章

  1. newLISP 10.5.3 发布,类 Lisp 的脚本语言

    newLISP 10.5.3 修复了一些 bug ,为 KMEANS 集群分析器增加了一些函数. newLISP是一个类似Lisp语言的.用于一般用途的脚本语言.它具有 LISP 语言所有的魔力,但更 ...

  2. 改进的newlisp编译脚本,只需要配置

    前面有一篇Say bye to CMake and Makefile我开始用自己编写的newlisp脚本替代CMake,今天对前面的进行改进. 改进部分是: 1. newlisp armory模块的引 ...

  3. 用newLISP读取Hive的元数据

    思想是通过调用hive -e命令,然后解析返回的结果. 以下的hive.lsp文件是一个样例,提供了读取本地hive数据库名称.表名,表结构和依据hive表的创建语句生成相应的MySQL的创建语句. ...

  4. newlisp 注释生成文档

    最近写了一个newlisp_armory库,用来实现一些newlisp自身不支持的操作.比如跨windows和ubuntu的目录拷贝功能等. 自己用的时候,发现没有API reference文档参考, ...

  5. newlisp 接受jenkins带空格的参数

    jenkins有一个参数text种类,它能够以文本的段落拷贝作为参数 newlispThe program receives parameters are separated by spaces, 更 ...

  6. MapReduce 规划 系列的12 使用Hadoop Streaming技术集成newLISP文字

    本文example6环境与前Hadoop 1.x异,于Hadoop 2.x环境测试. 功能与前面相同的日志处理程序. 第一newLISP文字,游玩mapper任务.于stdin读取文本数据,将did由 ...

  7. crontab演出newLISP脚本设置环境变量

    今天遇到一个问题.执行在终端newLISP文字,一切正常,搬去crontab在将无法正常工作.即使crontab -e命令是在同一个用户执行.还是有问题. 因为newLISP脚本使用hive和hado ...

  8. 使用newLISP由SMTPserver发送电子邮件

    直接使用的标准模块smtpx.lsp, smtp.lsp你可以不设置port,庭审后,没用. 以下是一个示例代码: #!/usr/bin/newlisp (set 'debug-flag true) ...

  9. newlisp获得bash该命令的退出状态

    newlisp exec你可以运行bash命令.但如何返回状态来运行它? 特别是,我需要监控hdfs dfs -test 结果返回.经过一番摸索,我发现了一个简单的答案: #!/usr/bin/new ...

  10. Ubuntu 14.04 编译newLISP 10.6.0

    1. 确保安装了gcc4.8.2 2. 安装须要的库: apt-get install libreadline6 libreadline6-dev 3. 下载并解压newLISP源码,这个不多说了,去 ...

随机推荐

  1. Linux学习记录--文件IO操作相关系统编程

    文件IO操作相关系统编程 这里主要说两套IO操作接口,各自是: POSIX标准 read|write接口.函数定义在#include<unistd.h> ISO C标准 fread|fwr ...

  2. 最全面的JS表单验证

    两个日期比較 /*  用途:检查開始日期是否小于等于结束日期 输入:  s:字符串 開始日期 格式:2001-5-4 e:字符串 结束日期 格式:2002-5-4 返回:  假设通过開始日期小于等于结 ...

  3. Java深入 - MyBatis的经常用法

    MyBatis我们这篇文章主要记录一些经常使用的操作方法.这样在开发和使用的过程中这篇文章能够当做工具书来使用. MyBatis的数据源配置 <bean id="dataSource& ...

  4. 【JMeter】if语句中不能Failure=false解决办法

    错误写法: if(roomId.matches("regEx")) Failure=false; else{ Failure=true; FailureMessage=" ...

  5. 创建一个可用的简单的SpringMVC项目,图文并茂

    转载麻烦注明下来源:http://www.cnblogs.com/silentdoer/articles/7134332.html,谢谢. 最近在自学SpringMVC,百度了很多资料都是比较老的,而 ...

  6. mac上虚拟机安装旧版本的macosx 10.8

    前言 由于测试的需要,需要10.8的macosx,但又不想降级自己mac版本,所以还是装虚拟机,Parallels Desktop试验了安装不了osx,就换VMware Fusion,发现是可以的. ...

  7. 【Zookeeper】源码分析之服务器(一)

    一.前言 前面已经介绍了Zookeeper中Leader选举的具体流程,接着来学习Zookeeper中的各种服务器. 二.总体框架图 对于服务器,其框架图如下图所示 说明: ZooKeeperServ ...

  8. Tableau Desktop 10.4.2 的安装和激活

    在安装之前,首先我们要弄清楚Tableau是个什么鬼东西,我们为什么需要安装这款软件? Tableau将数据运算与美观的图表完美地嫁接在一起.它的程序很容易上手,各公司可以用它将大量数据拖放到数字&q ...

  9. Udacity并行计算课程笔记-The GPU Programming Model

    一.传统的提高计算速度的方法 faster clocks (设置更快的时钟) more work over per clock cycle(每个时钟周期做更多的工作) more processors( ...

  10. ArcGIS API for JavaScript 4.2学习笔记[8] 2D与3D视图同步

    同一份数据不同视图查看可能用的比较少,因为3D视图放大很多后就和2D地图差不多了,畸变很小,用于超大范围的地图显示时有用,很多时候都是在平面地图上进行分析.查询.操作.教学需要可能会对这个有要求? 本 ...