Commit | Line | Data |
---|---|---|
d6624158 JM |
1 | classdef core |
2 | methods(Static) | |
6d12affa JM |
3 | function str = pr_str(varargin) |
4 | strs = cellfun(@(s) printer.pr_str(s,true), varargin, ... | |
5 | 'UniformOutput', false); | |
6 | str = strjoin(strs, ' '); | |
7 | end | |
8 | function str = do_str(varargin) | |
9 | strs = cellfun(@(s) printer.pr_str(s,false), varargin, ... | |
10 | 'UniformOutput', false); | |
11 | str = strjoin(strs, ''); | |
12 | end | |
13 | function ret = prn(varargin) | |
14 | strs = cellfun(@(s) printer.pr_str(s,true), varargin, ... | |
15 | 'UniformOutput', false); | |
16 | fprintf('%s\n', strjoin(strs, ' ')); | |
17 | ret = types.nil; | |
18 | end | |
19 | function ret = println(varargin) | |
20 | strs = cellfun(@(s) printer.pr_str(s,false), varargin, ... | |
21 | 'UniformOutput', false); | |
22 | fprintf('%s\n', strjoin(strs, ' ')); | |
23 | ret = types.nil; | |
24 | end | |
25 | ||
d6624158 JM |
26 | function n = ns() |
27 | n = containers.Map(); | |
6d12affa JM |
28 | n('=') = @types.equal; |
29 | ||
30 | n('pr-str') = @core.pr_str; | |
31 | n('str') = @core.do_str; | |
32 | n('prn') = @core.prn; | |
33 | n('println') = @core.println; | |
9831bce7 JM |
34 | n('read-string') = @reader.read_str; |
35 | n('slurp') = @fileread; | |
36 | ||
d6624158 JM |
37 | n('<') = @(a,b) a<b; |
38 | n('<=') = @(a,b) a<=b; | |
39 | n('>') = @(a,b) a>b; | |
40 | n('>=') = @(a,b) a>=b; | |
6d12affa JM |
41 | n('+') = @(a,b) a+b; |
42 | n('-') = @(a,b) a-b; | |
43 | n('*') = @(a,b) a*b; | |
44 | n('/') = @(a,b) floor(a/b); | |
d6624158 JM |
45 | |
46 | n('list') = @(varargin) varargin; | |
47 | n('list?') = @iscell; | |
48 | n('empty?') = @(a) length(a) == 0; | |
49 | n('count') = @(a) length(a); | |
50 | end | |
51 | end | |
52 | end | |
53 |