hvm 2.0.22

A massively parallel, optimal functional runtime in Rust.
Documentation
@IO/Call = (a (b (c (d ((@IO/Call/tag (a (b (c (d e))))) e)))))

@IO/Call/tag = 1

@IO/Done = (a (b ((@IO/Done/tag (a (b c))) c)))

@IO/Done/tag = 0

@IO/MAGIC = (13683217 16719857)

@IO/bind = ((@IO/bind__C2 a) a)

@IO/bind__C0 = (* (b (a c)))
  & @undefer ~ (a (b c))

@IO/bind__C1 = (* (* (a (b ((c d) (e g))))))
  & @IO/Call ~ (@IO/MAGIC (a (b ((c f) g))))
  & @IO/bind ~ (d (e f))

@IO/bind__C2 = (?((@IO/bind__C0 @IO/bind__C1) a) a)

@IO/wrap = a
  & @IO/Done ~ (@IO/MAGIC a)

@String/Cons = (a (b ((@String/Cons/tag (a (b c))) c)))

@String/Cons/tag = 1

@String/Nil = ((@String/Nil/tag a) a)

@String/Nil/tag = 0

@call = (a (b c))
  & @IO/Call ~ (@IO/MAGIC (a (b (@call__C0 c))))

@call__C0 = a
  & @IO/Done ~ (@IO/MAGIC a)

@main = s
  & @IO/bind ~ (o ((((p p) (@IO/wrap r)) r) s))
  & @call ~ (d ((m n) o))
  & @String/Cons ~ (79 (c d))
  & @String/Cons ~ (80 (b c))
  & @String/Cons ~ (69 (a b))
  & @String/Cons ~ (78 (@String/Nil a))
  & @String/Cons ~ (102 (l m))
  & @String/Cons ~ (97 (k l))
  & @String/Cons ~ (107 (j k))
  & @String/Cons ~ (101 (i j))
  & @String/Cons ~ (45 (h i))
  & @String/Cons ~ (102 (g h))
  & @String/Cons ~ (105 (f g))
  & @String/Cons ~ (108 (e f))
  & @String/Cons ~ (101 (@String/Nil e))
  & @String/Cons ~ (114 (@String/Nil n))

@test-io = 1

@undefer = (((a a) b) b)