https://docs.racket-lang.org/foreign/index.html
Looking at Julia (Which has a no "boiler plate" philosophy when using C or Fortan) the function is just called.
Interesting to look at for comparison
Julia ccall- https://docs.julialang.org/en/v0.6.1/manual/calling-c-and-fo...
Racket FFI - https://docs.racket-lang.org/foreign/index.html
https://github.com/JuliaPy/PyCall.jl/blob/master/src/PyCall....
I guess it is like this: Importing the pycall library is to turn on the python interpreter thread and not interrupt it. Then you can call any python library you want.
CPython has a stable C API for interacting with the interpreter and Python objects. Presumably FLI goes through this API to interoperate with Python, just like any C/C++ application embedding CPython would.
Edit: Yep, https://github.com/guenchi/FLI/blob/master/pycall.sc
Also, do you know of any static typing extension for Chez?
Chicken has much more library and bigger community.
BUT...
Chez is the only commercial compiler (before open source) and very stable and fast...
Static? no, maybe Stalin works on Chez
By the way, we have a scheme binding of tensorflow. That calling direct by tensorflow's C API.
FLI is in order to solve the problem of calling Numpy by Scheme which is lack of C - api.
Looking at it from another perspective, any language can call another language through this ABI.
So any language with FFI can call any compiled binary code. For interpreted languages, you must embed the runtime (or interpreter).