missinglisp 0.0.2 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/missinglisp.rb +6 -0
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3d439126ef5936974b06ea17de05495349e19c0a11118edc19092e873a736436
4
- data.tar.gz: f132a6e170876980329bd8b84d20aa1bd7e06f100bf3872b0c0e763535b30505
3
+ metadata.gz: 4fbb2ed93c1b8267fa1c7040d616daa064462da1f0a94a4d2a1939e0da1b3603
4
+ data.tar.gz: 59781567cbafa9ee4ee47bfd696e139df9fcfa1082752d4db34025a457d7b4bf
5
5
  SHA512:
6
- metadata.gz: 84dc4fadf2b03da0d3c6e155b8eacc056bd6565438a4dd08d32bfbdcb4197727ac3000317f8f0b612808af346fd77771385c7731be852a06af7de72f8fe170cb
7
- data.tar.gz: 9995f555865a9813a2505c79f2abd9f6823fda4b81311ed312f314f3537f0020d2fe8162067b9bc3740726abc86c4753f02d7544ca990ef066a9584f7e2ca5c0
6
+ metadata.gz: cf3c7ab843817bd83c427bc01d49e8f544ab4a54833e23179413c2dfb6ff00a1665db677bbf16b97bc59b276f907fc7158ee5c21d87466bb48aafedcb0ad1c12
7
+ data.tar.gz: b4326558896e54118bae538360d05b84bbbb0971b4b2acb31c57fa17e1e49b33fec90efeafe21b24d00812885d3f88dc96c3f17d050bf41b4851cdb325662e73
data/lib/missinglisp.rb CHANGED
@@ -16,18 +16,22 @@ class Lisp
16
16
  gt: ->(a, b, *) { a > b },
17
17
  geq: ->(a, b, *) { a >= b },
18
18
 
19
+ length: ->(l, *) { l.length },
20
+
19
21
  # string
20
22
  aref: ->(s, at, *) { s[at] },
21
23
  concatenate: ->(_type, *ls) { ls.reduce(:+) },
22
24
 
23
25
  # char
24
26
  codeChar: ->(c, *) { c.chr },
27
+ charCode: ->(c, *) { c.ord },
25
28
 
26
29
  readLine: ->(*) { $stdin.readline.chomp },
27
30
 
28
31
  p: ->(*ls) { p ls },
29
32
  print: ->(*ls) { p ls },
30
33
  writeLine: ->(s, *) { puts s },
34
+ princ: ->(s, *) { print s; $stdout.flush },
31
35
 
32
36
  t: true,
33
37
  nil: []
@@ -60,6 +64,8 @@ class Lisp
60
64
  elsif exp[0] == :lambda
61
65
  _, params, e = exp
62
66
  return ->(*args) { self.eval(e, env.merge(Hash[params.zip(args)])) }
67
+ elsif exp[0] == :progn
68
+ return self.eval_stmts(exp[1..], env)
63
69
  end
64
70
 
65
71
  # function application
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: missinglisp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yajima Soichi