(hugr 0)

(mod)

(define-func public example.swap
  ; The types of the values to be swapped are passed as implicit parameters.
  (param ?a core.type)
  (param ?b core.type)
  (core.fn [?a ?b] [?b ?a])
  (dfg [%a %b] [%b %a]
       (signature (core.fn [?a ?b] [?b ?a]))))

(declare-func public example.literals
  (param ?a core.str)
  (param ?b core.nat)
  (param ?c core.bytes)
  (param ?d core.float)
  (core.fn [] []))

(define-func private example.call_literals
  (core.fn [] [])
  (dfg [] []
    (signature (core.fn [] []))
    ((core.call
      (example.literals "string" 42 (bytes "SGVsbG8gd29ybGQg8J+Yig==") 6.023e23))
      (signature (core.fn [] [])))))
