aboutsummaryrefslogtreecommitdiff
path: root/ps/interop.ps
blob: fb3b88d76206592a54b4dbf12eea8236f8203112 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
% ps_val -> ps2mal -> mal_val
/ps2mal {
    % convert a PS value to a Mal value (recursively)
    [ exch
        { %forall returned values
            dup ==
            dup type /arraytype eq {
                (here1\n) print 
                _list_from_array
            }{ dup type /dicttype eq {
                (here2\n) print
                _hash_map_from_dict
            }{
                (here3\n) print
                % no-op
            } ifelse } ifelse
        } forall 
    ]
    (here4\n) print 
} def