Skip to content

Commit 7aaad85

Browse files
committed
Add Layer 11 to anoma.hoon
Add a map layer to the hoon library
1 parent 80cbc58 commit 7aaad85

File tree

1 file changed

+297
-0
lines changed

1 file changed

+297
-0
lines changed

hoon/anoma.hoon

+297
Original file line numberDiff line numberDiff line change
@@ -1064,4 +1064,301 @@
10641064
?~(a 0 +((add $(a l.a) $(a r.a))))
10651065
--
10661066
--
1067+
:: layer 11: maps
1068+
~% %eleven + ~
1069+
|%
1070+
++ need
1071+
~/ %need
1072+
|* a=(unit)
1073+
?~ a ~>(%mean.'need' !!)
1074+
u.a
1075+
++ some
1076+
|* a=*
1077+
[~ u=a]
1078+
++ fall
1079+
|* [a=(unit) b=*]
1080+
?~(a b u.a)
1081+
++ by
1082+
~/ %by
1083+
=| a=(tree (pair)) :: (map)
1084+
=* node ?>(?=(^ a) n.a)
1085+
|@
1086+
++ all
1087+
~/ %all
1088+
|* b=$-(* ?)
1089+
|- ^- ?
1090+
?~ a
1091+
&
1092+
?&((b q.n.a) $(a l.a) $(a r.a))
1093+
++ any
1094+
~/ %any
1095+
|* b=$-(* ?)
1096+
|- ^- ?
1097+
?~ a
1098+
|
1099+
?|((b q.n.a) $(a l.a) $(a r.a))
1100+
++ apt
1101+
=< $
1102+
~/ %apt
1103+
=| [l=(unit) r=(unit)]
1104+
|. ^- ?
1105+
?~ a &
1106+
?& ?~(l & &((gor p.n.a u.l) !=(p.n.a u.l)))
1107+
?~(r & &((gor u.r p.n.a) !=(u.r p.n.a)))
1108+
?~ l.a &
1109+
&((mor p.n.a p.n.l.a) !=(p.n.a p.n.l.a) $(a l.a, l `p.n.a))
1110+
?~ r.a &
1111+
&((mor p.n.a p.n.r.a) !=(p.n.a p.n.r.a) $(a r.a, r `p.n.a))
1112+
==
1113+
++ bif
1114+
~/ %bif
1115+
|* [b=* c=*]
1116+
^+ [l=a r=a]
1117+
=< +
1118+
|- ^+ a
1119+
?~ a
1120+
[[b c] ~ ~]
1121+
?: =(b p.n.a)
1122+
?: =(c q.n.a)
1123+
a
1124+
a(n [b c])
1125+
?: (gor b p.n.a)
1126+
=+ d=$(a l.a)
1127+
?> ?=(^ d)
1128+
d(r a(l r.d))
1129+
=+ d=$(a r.a)
1130+
?> ?=(^ d)
1131+
d(l a(r l.d))
1132+
++ del
1133+
~/ %del
1134+
|* b=*
1135+
|- ^+ a
1136+
?~ a
1137+
~
1138+
?. =(b p.n.a)
1139+
?: (gor b p.n.a)
1140+
a(l $(a l.a))
1141+
a(r $(a r.a))
1142+
|- ^- [$?(~ _a)]
1143+
?~ l.a r.a
1144+
?~ r.a l.a
1145+
?: (mor p.n.l.a p.n.r.a)
1146+
l.a(r $(l.a r.l.a))
1147+
r.a(l $(r.a l.r.a))
1148+
++ dif
1149+
~/ %dif
1150+
=+ b=a
1151+
|@
1152+
++ $
1153+
|- ^+ a
1154+
?~ b
1155+
a
1156+
=+ c=(bif p.n.b q.n.b)
1157+
?> ?=(^ c)
1158+
=+ d=$(a l.c, b l.b)
1159+
=+ e=$(a r.c, b r.b)
1160+
|- ^- [$?(~ _a)]
1161+
?~ d e
1162+
?~ e d
1163+
?: (mor p.n.d p.n.e)
1164+
d(r $(d r.d))
1165+
e(l $(e l.e))
1166+
--
1167+
++ dig
1168+
|= b=*
1169+
=+ c=1
1170+
|- ^- (unit @)
1171+
?~ a ~
1172+
?: =(b p.n.a) [~ u=(peg c 2)]
1173+
?: (gor b p.n.a)
1174+
$(a l.a, c (peg c 6))
1175+
$(a r.a, c (peg c 7))
1176+
++ gas
1177+
~/ %gas
1178+
|* b=(list [p=* q=*])
1179+
=> .(b `(list _?>(?=(^ a) n.a))`b)
1180+
|- ^+ a
1181+
?~ b
1182+
a
1183+
$(b t.b, a (put p.i.b q.i.b))
1184+
++ get
1185+
~/ %get
1186+
|* b=*
1187+
=> .(b `_?>(?=(^ a) p.n.a)`b)
1188+
|- ^- (unit _?>(?=(^ a) q.n.a))
1189+
?~ a
1190+
~
1191+
?: =(b p.n.a)
1192+
(some q.n.a)
1193+
?: (gor b p.n.a)
1194+
$(a l.a)
1195+
$(a r.a)
1196+
++ got
1197+
|* b=*
1198+
(need (get b))
1199+
++ gut
1200+
|* [b=* c=*]
1201+
(fall (get b) c)
1202+
++ has
1203+
~/ %has
1204+
|* b=*
1205+
!=(~ (get b))
1206+
++ int
1207+
~/ %int
1208+
=+ b=a
1209+
|@
1210+
++ $
1211+
|- ^+ a
1212+
?~ b
1213+
~
1214+
?~ a
1215+
~
1216+
?: (mor p.n.a p.n.b)
1217+
?: =(p.n.b p.n.a)
1218+
b(l $(a l.a, b l.b), r $(a r.a, b r.b))
1219+
?: (gor p.n.b p.n.a)
1220+
%- uni(a $(a l.a, r.b ~)) $(b r.b)
1221+
%- uni(a $(a r.a, l.b ~)) $(b l.b)
1222+
?: =(p.n.a p.n.b)
1223+
b(l $(b l.b, a l.a), r $(b r.b, a r.a))
1224+
?: (gor p.n.a p.n.b)
1225+
%- uni(a $(b l.b, r.a ~)) $(a r.a)
1226+
%- uni(a $(b r.b, l.a ~)) $(a l.a)
1227+
--
1228+
++ jab
1229+
~/ %jab
1230+
|* [key=_?>(?=(^ a) p.n.a) fun=$-(_?>(?=(^ a) q.n.a) _?>(?=(^ a) q.n.a))]
1231+
^+ a
1232+
::
1233+
?~ a !!
1234+
::
1235+
?: =(key p.n.a)
1236+
a(q.n (fun q.n.a))
1237+
::
1238+
?: (gor key p.n.a)
1239+
a(l $(a l.a))
1240+
::
1241+
a(r $(a r.a))
1242+
++ key
1243+
=< $
1244+
~/ %key
1245+
=+ b=`(set _?>(?=(^ a) p.n.a))`~
1246+
|. ^+ b
1247+
?~ a b
1248+
$(a r.a, b $(a l.a, b (~(put in b) p.n.a)))
1249+
++ mar
1250+
|* [b=* c=(unit *)]
1251+
?~ c
1252+
(del b)
1253+
(put b u.c)
1254+
++ put
1255+
~/ %put
1256+
|* [b=* c=*]
1257+
|- ^+ a
1258+
?~ a
1259+
[[b c] ~ ~]
1260+
?: =(b p.n.a)
1261+
?: =(c q.n.a)
1262+
a
1263+
a(n [b c])
1264+
?: (gor b p.n.a)
1265+
=+ d=$(a l.a)
1266+
?> ?=(^ d)
1267+
?: (mor p.n.a p.n.d)
1268+
a(l d)
1269+
d(r a(l r.d))
1270+
=+ d=$(a r.a)
1271+
?> ?=(^ d)
1272+
?: (mor p.n.a p.n.d)
1273+
a(r d)
1274+
d(l a(r l.d))
1275+
++ rep
1276+
~/ %rep
1277+
|* b=_=>(~ |=([* *] +<+))
1278+
|-
1279+
?~ a +<+.b
1280+
$(a r.a, +<+.b $(a l.a, +<+.b (b n.a +<+.b)))
1281+
++ rib
1282+
|* [b=* c=gate]
1283+
|- ^+ [b a]
1284+
?~ a [b ~]
1285+
=+ d=(c n.a b)
1286+
=. n.a +.d
1287+
=+ e=$(a l.a, b -.d)
1288+
=+ f=$(a r.a, b -.e)
1289+
[-.f a(l +.e, r +.f)]
1290+
++ run
1291+
~/ %run
1292+
|* b=gate
1293+
|-
1294+
?~ a a
1295+
[n=[p=p.n.a q=(b q.n.a)] l=$(a l.a) r=$(a r.a)]
1296+
++ tap
1297+
=< $
1298+
~/ %tap
1299+
=+ b=`(list _?>(?=(^ a) n.a))`~
1300+
|. ^+ b
1301+
?~ a
1302+
b
1303+
$(a r.a, b [n.a $(a l.a)])
1304+
++ uni
1305+
~/ %uni
1306+
=+ b=a
1307+
|@
1308+
++ $
1309+
|- ^+ a
1310+
?~ b
1311+
a
1312+
?~ a
1313+
b
1314+
?: =(p.n.b p.n.a)
1315+
b(l $(a l.a, b l.b), r $(a r.a, b r.b))
1316+
?: (mor p.n.a p.n.b)
1317+
?: (gor p.n.b p.n.a)
1318+
$(l.a $(a l.a, r.b ~), b r.b)
1319+
$(r.a $(a r.a, l.b ~), b l.b)
1320+
?: (gor p.n.a p.n.b)
1321+
$(l.b $(b l.b, r.a ~), a r.a)
1322+
$(r.b $(b r.b, l.a ~), a l.a)
1323+
--
1324+
++ uno
1325+
=+ b=a
1326+
|@
1327+
++ $
1328+
|= meg=$-([_p:node _q:node _q:node] _q:node)
1329+
|- ^+ a
1330+
?~ b
1331+
a
1332+
?~ a
1333+
b
1334+
?: =(p.n.b p.n.a)
1335+
:+ [p.n.a (meg p.n.a q.n.a q.n.b)]
1336+
$(b l.b, a l.a)
1337+
$(b r.b, a r.a)
1338+
?: (mor p.n.a p.n.b)
1339+
?: (gor p.n.b p.n.a)
1340+
$(l.a $(a l.a, r.b ~), b r.b)
1341+
$(r.a $(a r.a, l.b ~), b l.b)
1342+
?: (gor p.n.a p.n.b)
1343+
$(l.b $(b l.b, r.a ~), a r.a)
1344+
$(r.b $(b r.b, l.a ~), a l.a)
1345+
--
1346+
++ urn
1347+
~/ %urn
1348+
|* b=$-([* *] *)
1349+
|-
1350+
?~ a ~
1351+
a(n n.a(q (b p.n.a q.n.a)), l $(a l.a), r $(a r.a))
1352+
++ wyt
1353+
=< $
1354+
~% %wyt + ~
1355+
|. ^- @
1356+
?~(a 0 +((add $(a l.a) $(a r.a))))
1357+
++ val
1358+
=+ b=`(list _?>(?=(^ a) q.n.a))`~
1359+
|- ^+ b
1360+
?~ a b
1361+
$(a r.a, b [q.n.a $(a l.a)])
1362+
--
1363+
--
10671364
==

0 commit comments

Comments
 (0)