nydp 0.4.0 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/lisp/core-015-documentation.nydp +25 -2
- data/lib/lisp/core-017-builtin-dox.nydp +5 -0
- data/lib/lisp/core-060-benchmarking.nydp +16 -1
- data/lib/lisp/core-100-utils.nydp +27 -20
- data/lib/lisp/tests/filter-forms-examples.nydp +30 -0
- data/lib/lisp/tests/mapreduce-examples.nydp +10 -0
- data/lib/lisp/tests/set-intersection-examples.nydp +16 -0
- data/lib/lisp/tests/set-union-examples.nydp +16 -0
- data/lib/nydp/builtin/rand.rb +18 -0
- data/lib/nydp/builtin/set_intersection.rb +8 -0
- data/lib/nydp/builtin/set_union.rb +8 -0
- data/lib/nydp/core.rb +10 -5
- data/lib/nydp/pair.rb +3 -4
- data/lib/nydp/version.rb +1 -1
- data/spec/rand_spec.rb +45 -0
- metadata +10 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 858b22d67ba13ec86efe8a00fd10b5fa813aee8c
|
4
|
+
data.tar.gz: 24876cc3c6e1389f656640d3548574d7241b3725
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2c0094a86976f2272a70b9c5ea8b76e36face05f089ad9c7a0d51c3de251081230ce85d37e11f9ccaf23cd3d0433a655464d9193dfba37f1e1526fd929e03a13
|
7
|
+
data.tar.gz: 9eb38db6a571768e8da0bdddbd6420e7627f492748aa64aac0e8e48e08c9af416da84c5be0b8e3828559d1988de250f9f72eaa3d25166f5001c7a1896a9d8203
|
@@ -1,5 +1,24 @@
|
|
1
1
|
(def privately () nil)
|
2
2
|
|
3
|
+
(assign comments nil)
|
4
|
+
|
5
|
+
(def fetch-and-clear-comments ()
|
6
|
+
((fn (c) (assign comments nil) c) (rev comments)))
|
7
|
+
|
8
|
+
(def filter-comments (form acc)
|
9
|
+
(if (no form)
|
10
|
+
(rev acc)
|
11
|
+
(pair? form)
|
12
|
+
(filter-comments (cdr form)
|
13
|
+
(if (if (pair? (car form))
|
14
|
+
(eq? (caar form)
|
15
|
+
'comment))
|
16
|
+
acc
|
17
|
+
(cons (filter-comments (car form)
|
18
|
+
nil)
|
19
|
+
acc)))
|
20
|
+
form))
|
21
|
+
|
3
22
|
((fn (this-chapter-name chapters chapter-new chapter-build chapter-add-to-chapter)
|
4
23
|
(assign chapters (hash))
|
5
24
|
|
@@ -171,10 +190,10 @@
|
|
171
190
|
|
172
191
|
(def define-def-expr (name args body-forms)
|
173
192
|
; used internally by 'def
|
174
|
-
`(do (def-assign ,name (fun ,args ,@(hash-get body-forms nil)))
|
193
|
+
`(do (def-assign ,name (fun ,args ,@(filter-comments (hash-get body-forms nil))))
|
175
194
|
(dox-add-doc ',name
|
176
195
|
'def
|
177
|
-
',(map car (hash-get body-forms 'comment))
|
196
|
+
',(+ (fetch-and-clear-comments) (map car (hash-get body-forms 'comment)))
|
178
197
|
',args
|
179
198
|
'(def ,name ,args ,@(hash-get body-forms nil))
|
180
199
|
',(map car (hash-get body-forms 'chapter)))))
|
@@ -183,3 +202,7 @@
|
|
183
202
|
; define a new function in the global namespace
|
184
203
|
(chapter nydp-core)
|
185
204
|
(define-def-expr name args (filter-forms (build-def-hash (hash)) body)))
|
205
|
+
|
206
|
+
(mac comment (txt)
|
207
|
+
(assign comments (cons txt comments))
|
208
|
+
nil)
|
@@ -41,6 +41,9 @@
|
|
41
41
|
(dox-add-doc 'inspect 'def '("return a string representing 'arg, potentially (but not always) in a way that can be parsed back in to get the original object") '(arg) nil '(nydp-core))
|
42
42
|
(dox-add-doc 'comment 'def '("does nothing at all." "Intercepted inside 'def and 'mac and used for documentation") '(arg) nil '(nydp-core))
|
43
43
|
(dox-add-doc 'parse-in-string 'def '("parse the given string assuming a string-open delimiter has already been encountered") '(str) nil '(nydp-core))
|
44
|
+
(dox-add-doc 'rand 'def '("return a random number ; with no args, between 0 and 1"
|
45
|
+
"with 1 arg, an integer less than arg"
|
46
|
+
"with two args, an integer >= arg 0 and < arg 1") 'args nil '(math))
|
44
47
|
(dox-add-doc 'random-string 'def '("return a random string of length 'len (default 10)") '(len) nil '(string-manipulation))
|
45
48
|
(dox-add-doc 'to-string 'def '("return a human-readable string representation of 'arg") '(arg) nil '(string-manipulation))
|
46
49
|
(dox-add-doc 'string-length 'def '("return the length of 'arg") '(arg) nil '(string-manipulation))
|
@@ -78,6 +81,8 @@
|
|
78
81
|
(dox-add-doc 'chapter-current 'def '("Get the name of the chapter in progress right now - this is normally the last value sent to 'chapter-start") nil nil '(nydp/documentation))
|
79
82
|
(dox-add-doc 'chapter-delete 'def '("Remove the named chapter") '(name) nil '(nydp/documentation))
|
80
83
|
(dox-add-doc 'chapter-find 'def '("Get the named chapter") '(name) nil '(nydp/documentation))
|
84
|
+
(dox-add-doc 'set-intersection 'def '("return the intersection of the given lists") 'args nil '(list-manipulation))
|
85
|
+
(dox-add-doc 'set-union 'def '("return the union of the given lists") 'args nil '(list-manipulation))
|
81
86
|
(dox-add-doc 'dox-add-doc 'def '("Store the provided documentation item."
|
82
87
|
"'name is the name of the item"
|
83
88
|
"'what is the type of the item ('def or 'mac or 'thingy ... this is user-definable, not related to 'type-of)"
|
@@ -164,6 +164,19 @@
|
|
164
164
|
(bm-or-lex-lex-lex 1 2 3)
|
165
165
|
(bm-or-lex-lex-lex nil 2 3))
|
166
166
|
|
167
|
+
(def build-mapsum-data (count data)
|
168
|
+
(if (> count 0)
|
169
|
+
(build-mapsum-data (- count 1)
|
170
|
+
(cons { mappit (rand 10) }
|
171
|
+
data))
|
172
|
+
data))
|
173
|
+
|
174
|
+
(let mapsum-data (build-mapsum-data 1000)
|
175
|
+
(def bm-mapsum () (mapsum &mappit mapsum-data))
|
176
|
+
(def bm-mapreduce () (mapreduce &mappit + mapsum-data 0)))
|
177
|
+
|
178
|
+
|
179
|
+
|
167
180
|
(def bm-repeat (f n)
|
168
181
|
; used in benchmarking
|
169
182
|
(for b 1 n (f)))
|
@@ -184,7 +197,9 @@
|
|
184
197
|
|
185
198
|
(def rbs (name)
|
186
199
|
(let summary nil
|
187
|
-
(push (bm "
|
200
|
+
(push (bm "mapsum " bm-mapsum 10 100) summary)
|
201
|
+
(push (bm "mapreduce " bm-mapreduce 10 100) summary)
|
202
|
+
;; (push (bm "cond with OR " bm-faster-or 10 40000) summary)
|
188
203
|
;; (push (bm "cond with OR " bm-cond-9 10 40000) summary)
|
189
204
|
;; (push (bm "cond with OR " bm-cond-9 10 100000) summary)
|
190
205
|
;; (push (bm "cond with OR " bm-cond-lex-lit-lit 10 100000) summary)
|
@@ -15,13 +15,21 @@
|
|
15
15
|
(map λx(hash-get tmp x)
|
16
16
|
(sort:hash-keys tmp)))))
|
17
17
|
|
18
|
-
(def
|
19
|
-
;
|
20
|
-
|
21
|
-
|
22
|
-
(
|
23
|
-
|
24
|
-
|
18
|
+
(def mapreduce (fmap freduce things)
|
19
|
+
; same as (reduce freduce (map fmap things))
|
20
|
+
; returns the resulting list
|
21
|
+
(if (pair? things)
|
22
|
+
(freduce (fmap (car things))
|
23
|
+
(mapreduce fmap freduce (cdr things)))
|
24
|
+
things
|
25
|
+
(freduce (map fmap things))
|
26
|
+
(freduce)))
|
27
|
+
|
28
|
+
; map 'f over 'things and sum the resulting list
|
29
|
+
(def mapsum (f things) (mapreduce f + things))
|
30
|
+
|
31
|
+
; return values for each key in hash 'h
|
32
|
+
(def hash-values (h) (map (fn (k) h.,k) (hash-keys h)))
|
25
33
|
|
26
34
|
(def seen? ()
|
27
35
|
; returns a new function f which takes a parameter x
|
@@ -33,9 +41,8 @@
|
|
33
41
|
(let seen (hash)
|
34
42
|
λx(returning seen.,x (= seen.,x t))))
|
35
43
|
|
36
|
-
|
37
|
-
|
38
|
-
(reject (seen?) things))
|
44
|
+
; return a list containing all the elements of 'things, but with no duplicates
|
45
|
+
(def uniqify (things) (reject (seen?) things))
|
39
46
|
|
40
47
|
(def group-by (f things)
|
41
48
|
; return a hash of 'things keyed by (f thing) for
|
@@ -54,9 +61,8 @@
|
|
54
61
|
(let mi (m2i anchor)
|
55
62
|
(map λm(i2m (+ mi m)) mm))))
|
56
63
|
|
57
|
-
(
|
58
|
-
|
59
|
-
`(brace-list ,@(flatten:map λn(list n n) names)))
|
64
|
+
; (auto-hash a b c) same as { a a b b c c }
|
65
|
+
(mac auto-hash names `(brace-list ,@(flatten:map λn(list n n) names)))
|
60
66
|
|
61
67
|
(mac accum (accfn-name . body)
|
62
68
|
(w/uniq acc
|
@@ -65,18 +71,19 @@
|
|
65
71
|
,@body
|
66
72
|
(rev ,acc)))))
|
67
73
|
|
68
|
-
|
69
|
-
|
74
|
+
; increment the value at 'place by 'inc (default 1)
|
75
|
+
(mac ++ (place inc) `(= ,place (+ ,place ,(or inc 1))))
|
70
76
|
|
77
|
+
; return a function that returns 'start on first invocation,
|
78
|
+
; and 'start + n * 'incr for each nth invocation
|
71
79
|
(def seqf (start incr)
|
72
80
|
(let i (or incr 1)
|
73
81
|
(fn () (returning start (++ start i)))))
|
74
82
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
(map λa(apply f a) args))
|
83
|
+
; like 'map, but assumes each item in 'args is a list
|
84
|
+
; of parameters for 'f. Effectively, calls (apply f item)
|
85
|
+
; for each item in 'args
|
86
|
+
(def mapply (f args) (map λa(apply f a) args))
|
80
87
|
|
81
88
|
(mac def/cycler (name things)
|
82
89
|
; create a function called 'name ; each invocation of the function will
|
@@ -44,3 +44,33 @@
|
|
44
44
|
(this)
|
45
45
|
(that))))
|
46
46
|
((("hello") ("more details") ("very rigourous")) ((this) (that)))))
|
47
|
+
|
48
|
+
(examples-for filter-comments
|
49
|
+
("returns nil for nil"
|
50
|
+
(filter-comments nil nil)
|
51
|
+
nil)
|
52
|
+
|
53
|
+
("returns atom for atom"
|
54
|
+
(filter-comments 12 nil)
|
55
|
+
12)
|
56
|
+
|
57
|
+
("returns list for list"
|
58
|
+
(filter-comments '(a b c d) nil)
|
59
|
+
(a b c d))
|
60
|
+
|
61
|
+
("returns list without comment for list with comment"
|
62
|
+
(filter-comments '(a b (comment "hahaha") c d) nil)
|
63
|
+
(a b c d))
|
64
|
+
|
65
|
+
("returns nothing for comment"
|
66
|
+
(filter-comments '((comment "hahaha")) nil)
|
67
|
+
nil)
|
68
|
+
|
69
|
+
("weeds out nested comments"
|
70
|
+
(filter-comments '(1 2 (3 4
|
71
|
+
(comment "yoyo") 5
|
72
|
+
(6 7 (comment "eight") 8 9)
|
73
|
+
{ 10 (comment "eleven") 11 12 13 }
|
74
|
+
(comment "fourteen") 14) (comment "fifteen") 15
|
75
|
+
(if 16 (comment "seventeen") 17 (comment "eighteen") 18 19)))
|
76
|
+
(1 2 (3 4 5 (6 7 8 9) (brace-list 10 11 12 13) 14) 15 (if 16 17 18 19))))
|
@@ -0,0 +1,10 @@
|
|
1
|
+
(examples-for mapreduce
|
2
|
+
("maps a function over a list and sums the result"
|
3
|
+
(mapreduce car + '((2 3) (5 7) (11 13)) 0)
|
4
|
+
18)
|
5
|
+
|
6
|
+
("extracts an attribute and sums the result"
|
7
|
+
(mapreduce &age + (list { name "a" age 10 }
|
8
|
+
{ name "b" age 7 }
|
9
|
+
{ name "c" age 12 }) 0)
|
10
|
+
29))
|
@@ -0,0 +1,16 @@
|
|
1
|
+
(examples-for ⋂
|
2
|
+
("returns a single arg"
|
3
|
+
(⋂ '(a b c))
|
4
|
+
(a b c))
|
5
|
+
|
6
|
+
("returns intersection of two args"
|
7
|
+
(⋂ '(a b c) '(a b d))
|
8
|
+
(a b))
|
9
|
+
|
10
|
+
("returns intersection of three args"
|
11
|
+
(⋂ '(a b c d e) '(a b c d f) '(z b c d g))
|
12
|
+
(b c d))
|
13
|
+
|
14
|
+
("returns intersection of four args"
|
15
|
+
(⋂ '(a b c d e) '(a b c d f) '(z b d c g) '(z y g c d))
|
16
|
+
(c d)))
|
@@ -0,0 +1,16 @@
|
|
1
|
+
(examples-for ⋃
|
2
|
+
("returns a single arg"
|
3
|
+
(⋃ '(a b c))
|
4
|
+
(a b c))
|
5
|
+
|
6
|
+
("returns union of two args"
|
7
|
+
(⋃ '(a b c) '(a b d))
|
8
|
+
(a b c d))
|
9
|
+
|
10
|
+
("returns union of three args"
|
11
|
+
(⋃ '(a b c d e) '(a b c d f) '(z b c d g))
|
12
|
+
(a b c d e f z g))
|
13
|
+
|
14
|
+
("returns union of four args"
|
15
|
+
(⋃ '(a b c d e) '(a b c d f) '(z b d c g) '(z y g c d))
|
16
|
+
(a b c d e f z g y)))
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class Nydp::Builtin::Rand
|
2
|
+
include Nydp::Builtin::Base, Singleton
|
3
|
+
|
4
|
+
def builtin_invoke_1 vm ; vm.push_arg rand ; end
|
5
|
+
def builtin_invoke_2 vm, a ; vm.push_arg rand(a) ; end
|
6
|
+
def builtin_invoke_3 vm, a0, a1 ; vm.push_arg(a0 + rand(a1 - a0)) ; end
|
7
|
+
def builtin_invoke vm, args ;
|
8
|
+
if Nydp::NIL.is? args
|
9
|
+
builtin_invoke_1 vm
|
10
|
+
else
|
11
|
+
case args.size
|
12
|
+
when 1 ; builtin_invoke_2 vm, args.car
|
13
|
+
when 2 ; builtin_invoke_3 vm, args.car, args.cadr
|
14
|
+
else ; raise "rand: 0, 1 or 2 args expected, got #{args.length}"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
class Nydp::Builtin::SetIntersection
|
2
|
+
include Nydp::Builtin::Base, Singleton
|
3
|
+
|
4
|
+
def builtin_invoke_2 vm, a ; vm.push_arg a ; end
|
5
|
+
def builtin_invoke_3 vm, a, b ; vm.push_arg(a & b) ; end
|
6
|
+
def builtin_invoke_4 vm, a, b, c ; vm.push_arg(a & b & c) ; end
|
7
|
+
def builtin_invoke vm, args ; vm.push_arg args.reduce &:& ; end
|
8
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
class Nydp::Builtin::SetUnion
|
2
|
+
include Nydp::Builtin::Base, Singleton
|
3
|
+
|
4
|
+
def builtin_invoke_2 vm, a ; vm.push_arg a ; end
|
5
|
+
def builtin_invoke_3 vm, a, b ; vm.push_arg(a | b) ; end
|
6
|
+
def builtin_invoke_4 vm, a, b, c ; vm.push_arg(a | b | c) ; end
|
7
|
+
def builtin_invoke vm, args ; vm.push_arg args.reduce &:| ; end
|
8
|
+
end
|
data/lib/nydp/core.rb
CHANGED
@@ -45,6 +45,7 @@ module Nydp
|
|
45
45
|
Symbol.mk(:p, ns).assign(Nydp::Builtin::Puts.instance)
|
46
46
|
Symbol.mk(:PI, ns).assign 3.1415
|
47
47
|
Symbol.mk(:nil, ns).assign Nydp::NIL
|
48
|
+
Symbol.mk(:rand, ns).assign Nydp::Builtin::Rand.instance
|
48
49
|
Symbol.mk(:sort, ns).assign Nydp::Builtin::Sort.instance
|
49
50
|
Symbol.mk(:sqrt, ns).assign Nydp::Builtin::Sqrt.instance
|
50
51
|
Symbol.mk(:t, ns).assign Nydp::T
|
@@ -74,11 +75,15 @@ module Nydp
|
|
74
75
|
Symbol.mk(:"pre-compile" , ns).assign Nydp::Builtin::PreCompile.instance
|
75
76
|
Symbol.mk(:"script-run" , ns).assign Nydp::Builtin::ScriptRun.instance
|
76
77
|
Symbol.mk(:"**" , ns).assign Nydp::Builtin::MathPower.instance
|
77
|
-
Symbol.mk(:"⌊"
|
78
|
-
Symbol.mk(:"math-floor"
|
79
|
-
Symbol.mk(:"⌈"
|
80
|
-
Symbol.mk(:"math-ceiling", ns).assign Nydp::Builtin::MathCeiling.instance
|
81
|
-
Symbol.mk(:"math-round"
|
78
|
+
Symbol.mk(:"⌊" , ns).assign Nydp::Builtin::MathFloor.instance
|
79
|
+
Symbol.mk(:"math-floor" , ns).assign Nydp::Builtin::MathFloor.instance
|
80
|
+
Symbol.mk(:"⌈" , ns).assign Nydp::Builtin::MathCeiling.instance
|
81
|
+
Symbol.mk(:"math-ceiling" , ns).assign Nydp::Builtin::MathCeiling.instance
|
82
|
+
Symbol.mk(:"math-round" , ns).assign Nydp::Builtin::MathRound.instance
|
83
|
+
Symbol.mk(:"⋂" , ns).assign Nydp::Builtin::SetIntersection.instance
|
84
|
+
Symbol.mk(:"set-intersection", ns).assign Nydp::Builtin::SetIntersection.instance
|
85
|
+
Symbol.mk(:"⋃" , ns).assign Nydp::Builtin::SetUnion.instance
|
86
|
+
Symbol.mk(:"set-union" , ns).assign Nydp::Builtin::SetUnion.instance
|
82
87
|
end
|
83
88
|
end
|
84
89
|
end
|
data/lib/nydp/pair.rb
CHANGED
@@ -22,6 +22,9 @@ class Nydp::Pair
|
|
22
22
|
def + other ; copy.append other ; end
|
23
23
|
def size ; 1 + (cdr.is_a?(Nydp::Pair) ? cdr.size : 0) ; end
|
24
24
|
def inspect ; "(#{inspect_rest})" ; end
|
25
|
+
def & other ; self.class.from_list((Set.new(self) & other).to_a) ; end
|
26
|
+
def | other ; self.class.from_list((Set.new(self) | other).to_a) ; end
|
27
|
+
def proper? ; Nydp::NIL.is?(cdr) || (cdr.is_a?(Nydp::Pair) && cdr.proper?) ; end
|
25
28
|
|
26
29
|
# returns Array of elements after calling #n2r on each element
|
27
30
|
def to_ruby list=[]
|
@@ -55,10 +58,6 @@ class Nydp::Pair
|
|
55
58
|
(NIL != other) && (other.respond_to? :car) && (self.car == other.car) && (self.cdr == other.cdr)
|
56
59
|
end
|
57
60
|
|
58
|
-
def proper?
|
59
|
-
Nydp::NIL.is?(cdr) || (cdr.is_a?(Nydp::Pair) && cdr.proper?)
|
60
|
-
end
|
61
|
-
|
62
61
|
def each &block
|
63
62
|
yield car
|
64
63
|
cdr.each(&block) unless Nydp::NIL.is?(cdr)
|
data/lib/nydp/version.rb
CHANGED
data/spec/rand_spec.rb
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Nydp::Builtin::Rand do
|
4
|
+
let(:vm) { Nydp::VM.new(ns) }
|
5
|
+
|
6
|
+
let(:randf) { Nydp::Builtin::Rand.instance }
|
7
|
+
|
8
|
+
def get_rand *args
|
9
|
+
randf.invoke vm, pair_list(args)
|
10
|
+
vm.pop_args(1).first
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "zero args" do
|
14
|
+
it "returns values between 0 and 1" do
|
15
|
+
numbers = (0..100).map { |i| get_rand }
|
16
|
+
expect(numbers.all? { |n| n >= 0 && n < 1 })
|
17
|
+
avg = numbers.reduce &:+
|
18
|
+
expect(avg).to be_between 40, 60
|
19
|
+
distinct = Set.new numbers
|
20
|
+
expect(distinct.count).to be > 90
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe "one arg" do
|
25
|
+
it "returns values between 0 and arg" do
|
26
|
+
numbers = (0..200).map { |i| get_rand 10 }
|
27
|
+
expect(numbers.all? { |n| n >= 0 && n < 10 })
|
28
|
+
avg = numbers.reduce &:+
|
29
|
+
expect(avg).to be_between 800, 1200
|
30
|
+
distinct = Set.new numbers
|
31
|
+
expect(distinct.count).to eq 10
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe "two arg" do
|
36
|
+
it "returns values between arg 0 and arg 1" do
|
37
|
+
numbers = (0..200).map { |i| get_rand 10, 20 }
|
38
|
+
expect(numbers.all? { |n| n >= 10 && n < 20 })
|
39
|
+
avg = numbers.reduce &:+
|
40
|
+
expect(avg).to be_between 2800, 3200
|
41
|
+
distinct = Set.new numbers
|
42
|
+
expect(distinct.count).to eq 10
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nydp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Conan Dalton
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-12-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -147,6 +147,7 @@ files:
|
|
147
147
|
- lib/lisp/tests/list-gsub-examples.nydp
|
148
148
|
- lib/lisp/tests/list-match-examples.nydp
|
149
149
|
- lib/lisp/tests/list-tests.nydp
|
150
|
+
- lib/lisp/tests/mapreduce-examples.nydp
|
150
151
|
- lib/lisp/tests/mapsum-examples.nydp
|
151
152
|
- lib/lisp/tests/none-examples.nydp
|
152
153
|
- lib/lisp/tests/orequal-examples.nydp
|
@@ -162,6 +163,8 @@ files:
|
|
162
163
|
- lib/lisp/tests/returning-examples.nydp
|
163
164
|
- lib/lisp/tests/rfnwith-tests.nydp
|
164
165
|
- lib/lisp/tests/seqf-examples.nydp
|
166
|
+
- lib/lisp/tests/set-intersection-examples.nydp
|
167
|
+
- lib/lisp/tests/set-union-examples.nydp
|
165
168
|
- lib/lisp/tests/sort-examples.nydp
|
166
169
|
- lib/lisp/tests/string-tests.nydp
|
167
170
|
- lib/lisp/tests/syntax-tests.nydp
|
@@ -202,8 +205,11 @@ files:
|
|
202
205
|
- lib/nydp/builtin/pre_compile.rb
|
203
206
|
- lib/nydp/builtin/puts.rb
|
204
207
|
- lib/nydp/builtin/quit.rb
|
208
|
+
- lib/nydp/builtin/rand.rb
|
205
209
|
- lib/nydp/builtin/random_string.rb
|
206
210
|
- lib/nydp/builtin/script_run.rb
|
211
|
+
- lib/nydp/builtin/set_intersection.rb
|
212
|
+
- lib/nydp/builtin/set_union.rb
|
207
213
|
- lib/nydp/builtin/sort.rb
|
208
214
|
- lib/nydp/builtin/sqrt.rb
|
209
215
|
- lib/nydp/builtin/string_match.rb
|
@@ -256,6 +262,7 @@ files:
|
|
256
262
|
- spec/nydp_spec.rb
|
257
263
|
- spec/pair_spec.rb
|
258
264
|
- spec/parser_spec.rb
|
265
|
+
- spec/rand_spec.rb
|
259
266
|
- spec/spec_helper.rb
|
260
267
|
- spec/string_atom_spec.rb
|
261
268
|
- spec/string_token_spec.rb
|
@@ -298,6 +305,7 @@ test_files:
|
|
298
305
|
- spec/nydp_spec.rb
|
299
306
|
- spec/pair_spec.rb
|
300
307
|
- spec/parser_spec.rb
|
308
|
+
- spec/rand_spec.rb
|
301
309
|
- spec/spec_helper.rb
|
302
310
|
- spec/string_atom_spec.rb
|
303
311
|
- spec/string_token_spec.rb
|