(module embabi1_4_export_logged_counter_rejected ; The signature is fully scalar (Int -> Int) — the author got the ; ABI types right. But, debugging the host integration, they drop ; a trace line into the accumulator body. That makes the fn ; effectful (!IO), which M1 forbids for an embedding boundary. ; This isolates the export-has-effects clause from the ; non-scalar-signature clause (the public fixture mixes both). ; MUST fail `ail check`. Kept verbatim: the rejection is the ; finding. (fn tick (export "tick") (type (fn-type (params (own (con Int))) (ret (own (con Int))) (effects IO))) (params n) (body (seq (do io/print_str "tick") (app + n 1)))))