on cf70879 help sign in
60 lines 1.0 kB history raw
1### `++jam`
3Unpack noun to atom
5Produces an atom unpacked from noun `a`. The inverse of cue.
7Accepts
8-------
10`a` is a noun.
12Produces
13--------
15An atom.
17Source
18------
20 ++ jam :: pack
21 ~/ %jam
22 |= a/*
23 ^- @
24 =+ b=0
25 =+ m=`(map * @)`~
26 =< q
27 |- ^- {p/@ q/@ r/(map * @)}
28 =+ c=(~(get by m) a)
29 ?~ c
30 => .(m (~(put by m) a b))
31 ?: ?=(@ a)
32 =+ d=(mat a)
33 [(add 1 p.d) (lsh 0 1 q.d) m]
34 => .(b (add 2 b))
35 =+ d=$(a -.a)
36 =+ e=$(a +.a, b (add b p.d), m r.d)
37 [(add 2 (add p.d p.e)) (mix 1 (lsh 0 2 (cat 0 q.d q.e))) r.e]
38 ?: ?&(?=(@ a) (lte (met 0 a) (met 0 u.c)))
39 =+ d=(mat a)
40 [(add 1 p.d) (lsh 0 1 q.d) m]
41 =+ d=(mat u.c)
42 [(add 2 p.d) (mix 3 (lsh 0 2 q.d)) m]
43 ::
46Examples
47--------
49 ~zod/try=> (jam 1)
50 12
51 ~zod/try=> (jam [1 1])
52 817
53 ~zod/try=> (jam [1 2])
54 4.657
55 ~zod/try=> (jam [~ u=19])
56 39.689
60***