We don't need SHA verification or Merkle dags in our transport bundle. Content stores can handle both bundle and term verification and hashing.
83 lines
1.6 KiB
Plaintext
83 lines
1.6 KiB
Plaintext
!import "base.tri" !Local
|
|
|
|
_ = t
|
|
|
|
matchList = a b : triage a _ b
|
|
|
|
emptyList? = matchList true (_ _ : false)
|
|
head = matchList t (head _ : head)
|
|
tail = matchList t (_ tail : tail)
|
|
|
|
append = y (self : matchList
|
|
(k : k)
|
|
(h r k : pair h (self r k)))
|
|
|
|
lExist? = y (self x : matchList
|
|
false
|
|
(h z : or? (equal? x h) (self x z)))
|
|
|
|
map_ = y (self :
|
|
matchList
|
|
(_ : t)
|
|
(head tail f : pair (f head) (self tail f)))
|
|
map = f l : map_ l f
|
|
|
|
filter_ = y (self : matchList
|
|
(_ : t)
|
|
(head tail f : matchBool (t head) id (f head) (self tail f)))
|
|
filter = f l : filter_ l f
|
|
|
|
foldl_ = y (self l f x : matchList (acc : acc) (head tail acc : self tail f (f acc head)) l x)
|
|
foldl = f x l : foldl_ l f x
|
|
|
|
foldr_ = y (self l f x : matchList x (head tail : f (self tail f x) head) l)
|
|
foldr = f x l : foldr_ l f x
|
|
|
|
length = y (self : matchList
|
|
0
|
|
(_ tail : succ (self tail)))
|
|
|
|
reverse = y (self : matchList
|
|
t
|
|
(head tail : append (self tail) (pair head t)))
|
|
|
|
snoc = y (self x : matchList
|
|
(pair x t)
|
|
(h z : pair h (self x z)))
|
|
|
|
count = y (self x : matchList
|
|
0
|
|
(h z : matchBool
|
|
(succ (self x z))
|
|
(self x z)
|
|
(equal? x h)))
|
|
|
|
last = y (self : matchList
|
|
t
|
|
(hd tl : matchBool
|
|
hd
|
|
(self tl)
|
|
(emptyList? tl)))
|
|
|
|
all? = y (self pred : matchList
|
|
true
|
|
(h z : and? (pred h) (self pred z)))
|
|
|
|
any? = y (self pred : matchList
|
|
false
|
|
(h z : or? (pred h) (self pred z)))
|
|
|
|
intersect = xs ys : filter (x : lExist? x ys) xs
|
|
|
|
nth_ = y (self n xs i :
|
|
matchList
|
|
t
|
|
(h r :
|
|
matchBool
|
|
h
|
|
(self n r (succ i))
|
|
(equal? i n))
|
|
xs)
|
|
|
|
nth = n xs : nth_ n xs 0
|