;; A foreign function's address is not a Flan function value. A Flan ;; function's emitted signature ends with the transfer channel and a C one ;; does not, so nothing could call the resulting pointer correctly — and an ;; aggregate crossing the boundary is flattened by a generated shim, which the ;; raw symbol knows nothing about. Refused for what it is, with the wrapper ;; named as the way to get one. (declare c-abs [n i32] i32 "abs") (defn use [f (Fn [i32] i32)] i32 (f 3)) (defn main [] i32 (println (use c-abs)) 0)