... https://github.com/wlav/cppyy (.require [library [lux (.except) [program (.only program)] ["[0]" ffi (.only import)] ["[0]" debug] [abstract [monad (.only do)]] [control ["[0]" maybe (.use "[1]#[0]" monad)] ["[0]" try (.only Try)] ["[0]" exception (.only Exception)] ["[0]" io (.only IO io)]] [data ["[0]" product] [text ["%" \\format (.only format)] [encoding ["[0]" utf8]]] [collection ["[0]" array (.only Array)]]] [math [number ["n" nat] ["i" int] ["[0]" i64]]] ["[0]" world ["[0]" file] ["[1]/[0]" environment]] [meta [target ["_" c++]] [macro ["^" pattern] ["[0]" template]] [compiler [reference [variable (.only Register)]] [language [lux [program (.only Program)] [translation (.only Host)] [analysis [macro (.only Expander)]] ["[0]" phase (.only Operation Phase) ["[0]" extension (.only Extender Handler) ["[0]" analysis ["[1]" js]] ["[0]" translation ["[1]" js]]] [translation ["[0]" reference] [c++ ["[0]" primitive]]]]]] [default ["[0]" platform (.only Platform)]] [meta ["[0]" cli] ["[0]" context] [archive (.only Archive) ["[0]" unit]] ["[0]" packager ["[1]" script]]]]]]] [program ["/" compositor]]) (import cppyy "[1]::[0]" ("static" cppdef [Text] "io" Bit) ("static" gbl (ffi.Object Any))) (def (print it) (-> _.Expression Text) (%.format "std::cout << " (_.code it) " << std::endl;")) (def _ (program [] (do io.monad [? (cppyy::cppdef [(%.format "void say_hello() { " (print (primitive.bit true)) (print (primitive.i64 +123)) (print (primitive.f64 -456.789)) (print (primitive.text "YOLO")) " }")]) .let [_ (debug.log! (%.format "BEFORE " (%.bit ?)))] global (cppyy::gbl) .let [say_hello (as ffi.Function (.python_object_get# "say_hello" global)) _ (debug.log! "AFTER") _ (.python_apply# say_hello [])]] (in (debug.log! "Hello, C++")))))