内容简介: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
转成数字类型, true
为 1
, false
为 2
(: 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之道》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Hadoop: The Definitive Guide
Tom White / O'Reilly Media, Inc. / 2009 / 44.99
Apache Hadoop is ideal for organizations with a growing need to store and process massive application datasets. Hadoop: The Definitive Guide is a comprehensive resource for using Hadoop to build relia......一起来看看 《Hadoop: The Definitive Guide》 这本书的介绍吧!