Nisp之道

栏目: Json · 发布时间: 8年前

内容简介:Nisp之道

Nisp

什么是Nisp ?

Nisp 是一种思想,一切皆函数 () 。基本语法规则为 (? ) ,其中的 ? 是定义在 Sandbox(沙盒) 里的方法,可通过 ( help ) 列举所有沙盒方法。

目的

设计 Nisp 的目的在于灵活地定义不同的方法规则来满足不同的需求,而方法去解析用户输入的参数时,依然使用 (? ) 的解析形式。

思想

Nisp 采用分治思想,将一个大的问题分解成有相似解决方案的小问题,分而治之。例如 (+ (+ 1 1) 1) 表达式, (? ) 中的 ?+ ,将会使用沙盒定义的 + 方法,做加法操作,被分解成 (+ 1 1) => 2(+ 2 1) => 3 。用户只需输入 exp 表达式,使用到 sandbox 里的方法,经过 nisp ,将最终输出用户所需的值。

Sandbox(沙盒)

用户不同的使用场景下,会有不同的方法。沙盒中定义了一些原子性的方法,用户可以用原子性的方法,去组合出所需的分子结果。例如 Portm 中通过 ( help ) 查看到的原子方法有,将依次给出方法的使用事例:

["$", "*", "+", "-", "/", ":", "apply", "def", "do", "file", "fn", "get", "glob", "help", "id", "jsonp", "log", "map", "merge", "num", "page", "parse", "pick", "query", "reduce", "set", "str", "stringify", "template", "throw", "|"]

$

基本语法: ($ arg1)

将原始输入值转成规范的基本数据类型(Number/Boolean/String),调用其它方法时,同时也会在外包一层 $ ,转成基本数据类型。

(:
    value (:
       number 1234
       string ($
            str1
       )
       boolean ($
            true
       )
    )
)

=> 

{
    value: {
        number: 1234,
        string: 'str1',
        boolean: true
    }
}

+-*/

基本语法: (+ arg1 arg2 ...)(- arg1 arg2)(* arg1 arg2 ...)(/ arg1 arg2)

(/ 1 0) 时,会返回null

(:
    value (:
        add (+
             1 1
        )
        sub (-
            2 1
        )
        multipy (*
            2 2
        )
        divide (/
            10 5
        )
    )   
)


=>

{
    value: {
        add: 2,
        sub: 1,
        multipy: 4,
        divide: 2
    }
}

:

基本语法: (: key value)

生成JSON,

(:
    value(:
        a 1
        b 2
    )
)

=> 

{
    a: 1,
    b: 2
}

|

生成数组

(:
    value(|
        a b c d
    )
)

=> 

{
    value: [
        'a',
        'b',
        'c',
        'd'
    ]
}

str

基本用法: (str arg) ,将 arg 的值转成字符串。

(:
    value(str
        (|
            true 12345
        )
    )
)

=>
{
    value: 'true,12345'
}

num

基础用法: (num arg) ,将 arg 转成数字类型, true1false2

(:
    value(:
        a (num 123)
        b (num '2121')
        c (num 'weofjewio')
        d (num true)
        f (num false)
    )    
)

=>

{
    value: {
        a: 123,
        b: 2121,
        c: null,
        d: 1,
        f: 0
    }
}

get

用来获取指定 key

基本用法 (get data arg2)(arg1) 为传入的原始值, arg2 填入 key 。最终得到 key 对应的 value

例:获取JSON中的 data2 中的 data2-1 值。

(:
    value(get (:
            version '1.0'
            status '200'
            value (:
                key1 value1
            )
            data (|
                (:
                    data1 data1            
                )
                (:
                    data2 (:
                      data2-1 data2-1  
                      data2-2 data2-2
                    )
                )
            )        
        ) data[1].data2.data2-1
    )
)

=>

{
    value: 'data2-1'
}

set

基本用法: (set data) ,添加数据 data

(:
    value(set
        abc 
    )  
)

=>

{
    value: 'abc'
}

jsonp

作用:用来完成Ajax的 jsonp 跨域请求 基本用法: (jsonp callbackName data)callbackName 为回调函数名, data 为json数据。

(:
    value(jsonp
      callback (:
            status 200
      )
    )
)

=>

{
    value: 'callback({"status":200})'
}

apply

def

do

file

fn

glob

help

id

jsonp

log

map

merge

page

parse

pick

query

reduce

stringify

template

throw


以上所述就是小编给大家介绍的《Nisp之道》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

大数据日知录

大数据日知录

张俊林 / 电子工业出版社 / 2014-9 / 69.00元

大数据是当前最为流行的热点概念之一,其已由技术名词衍生到对很多行业产生颠覆性影响的社会现象,作为最明确的技术发展趋势之一,基于大数据的各种新型产品必将会对每个人的日常生活产生日益重要的影响。 《大数据日知录:架构与算法》从架构与算法角度全面梳理了大数据存储与处理的相关技术。大数据技术具有涉及的知识点异常众多且正处于快速演进发展过程中等特点,其技术点包括底层的硬件体系结构、相关的基础理论、大规......一起来看看 《大数据日知录》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

URL 编码/解码
URL 编码/解码

URL 编码/解码