Use another language to call a function: Difference between revisions

added Perl 6 programming solution
(add Mercury)
(added Perl 6 programming solution)
Line 1,159:
=={{header|Pascal}}==
See [[Use_another_language_to_call_a_function#Delphi | Delphi]]
 
=={{header|Perl 6}}==
This [https://stackoverflow.com/a/50771971/3386748 SO answer], by JJ Merelo, explained the difficulty on providing a simple solution.  So this attempt takes the same approach as PicoLisp by summoning the interpreter at run time.
{{trans|PicoLisp}}
query.p6
<lang perl6>#!/usr/bin/env perl6
 
sub MAIN (Int :l(:len(:$length))) {
my Str $String = "Here am I";
$*OUT.print: $String if $String.codes ≤ $length
}</lang>
query.c
<lang c>#include<stdio.h>
#include<stddef.h>
#include<string.h>
 
int Query(char *Data, size_t *Length) {
FILE *fp;
char buf[64];
 
sprintf(buf, "/home/user/query.p6 --len=%zu", *Length);
if (!(fp = popen(buf, "r")))
return 0;
fgets(Data, *Length, fp);
*Length = strlen(Data);
return pclose(fp) >= 0 && *Length != 0;
}</lang>
{{out}}
<pre>
gcc -Wall -o main main.c query.c
./main
Here am I
</pre>
 
=={{header|Phix}}==
351

edits