Call a foreign-language function: Difference between revisions

Content added Content deleted
(Added JavaScript solution using Node.js and node-api)
(Added Hare)
Line 868: Line 868:
hello C
hello C
</pre>
</pre>

=={{header|Hare}}==
<lang hare>// hare run -lc ffi.ha

use fmt;
use strings;

@symbol("strdup") fn cstrdup(_: *const char) *char;
@symbol("free") fn cfree(_: nullable *void) void;

export fn main() void = {
let s = strings::to_c("Hello, World!");
defer free(s);

let dup = cstrdup(s);
fmt::printfln("{}", strings::fromc(dup))!;
cfree(dup);
};</lang>


=={{header|Haskell}}==
=={{header|Haskell}}==