(hugr 0)

(mod)

(declare-func public
 example.callee
 (core.fn [arithmetic.int.types.int] [arithmetic.int.types.int])
 (meta (compat.meta_json "title" "\"Callee\""))
 (meta (compat.meta_json "description" "\"This is a function declaration.\"")))

(define-func public example.caller
  (core.fn [arithmetic.int.types.int] [arithmetic.int.types.int])
  (meta (compat.meta_json "title" "\"Caller\""))
  (meta (compat.meta_json "description" "\"This defines a function that calls the function which we declared earlier.\""))
  (dfg [%3] [%4]
       (signature (core.fn [arithmetic.int.types.int] [arithmetic.int.types.int]))
       ((core.call _ _ example.callee) [%3] [%4]
                                                 (signature (core.fn [arithmetic.int.types.int] [arithmetic.int.types.int])))))

(define-func public
  example.load
  (core.fn [] [(core.fn [arithmetic.int.types.int] [arithmetic.int.types.int])])
  (dfg
   []
   [%5]
   (signature (core.fn [] [(core.fn [arithmetic.int.types.int] [arithmetic.int.types.int])]))
   ((core.load_const _ example.caller) [] [%5])))
