hvm 2.0.22

A massively parallel, optimal functional runtime in Rust.
Documentation
#import "@preview/cetz:0.2.2": draw, canvas

#let port = (name, pos, dir) => {
  import draw: *
  group(name: name, {
    translate(pos)
    rotate(dir)
    // scale(1.5)
    anchor("p", (0, 0))
    anchor("c", (0, 0.5))
  })
}

#let agent = (..agent) => (..args) => {
  import draw: *
  let style = agent.named().at("style", default: ())
  let name = args.named().at("name")
  let pos = args.named().at("pos")
  let rot = args.named().at("rot", default: 0deg)
  group(name: name, {
    translate(pos)
    rotate(rot)
    translate((0, -calc.sqrt(3)/4))
    stroke(2pt)
    line((-.5, 0), (.5, 0), (0, calc.sqrt(3)/2), close: true, ..style, stroke: 0.5pt)
    port("0", (0, calc.sqrt(3)/2), 0deg)
    port("1", (-1/2+1/3, 0), 180deg)
    port("2", (+1/2-1/3, 0), 180deg)
  })
}

#let link = (a, b) => {
  import draw: *
  stroke(2pt)
  bezier(a + ".p", b + ".p", a + ".c", b + ".c", stroke: 0.5pt)
}

#let con = agent()
#let dup = agent(style: (fill: black))