kazuyamaa/multi-language-messages-01 huggingface dataset:
Task: Parametric polymorphism
C: #include <stdio.h>
#include <stdlib.h>

#define decl_tree_type(T)                                                       \
        typedef struct node_##T##_t node_##T##_t, *node_##T;                    \
        struct node_##T##_t { node_##T left, right; T value; };                 \
                                                                                \
        node_##T node_##T##_new(T v) {                                          \
                node_##T node = malloc(sizeof(node_##T##_t));                   \
                node->value = v;                                                \
                node->left = node->right = 0;                                   \
                return node;                                                    \
        }                                                                       \
        node_##T node_##T##_insert(node_##T root, T v) {                        \
                node_##T n = node_##T##_new(v);                                 \
                while (root) {                                                  \
                        if (root->value < n->value)                             \
                                if (!root->left) return root->left = n;         \
                                else root = root->left;                         \
                        else                                                    \
                                if (!root->right) return root->right = n;       \
                                else root = root->right;                        \
                }                                                               \
                return 0;                                                       \
        }

#define tree_node(T) node_##T
#define node_insert(T, r, x) node_##T##_insert(r, x)
#define node_new(T, x) node_##T##_new(x)

decl_tree_type(double);
decl_tree_type(int);

int main()
{
        int i;
        tree_node(double) root_d = node_new(double, (double)rand() / RAND_MAX);

        for (i = 0; i < 10000; i++)
                node_insert(double, root_d, (double)rand() / RAND_MAX);

        tree_node(int) root_i = node_new(int, rand());
        for (i = 0; i < 10000; i++)
                node_insert(int, root_i, rand());

        return 0;
}

Go: package main

import "fmt"

func average(c intCollection) float64 {
    var sum, count int
    c.mapElements(func(n int) {
        sum += n
        count++
    })
    return float64(sum) / float64(count)
}

func main() {
    t1 := new(binaryTree)
    t2 := new(bTree)
    a1 := average(t1)
    a2 := average(t2)
    fmt.Println("binary tree average:", a1)
    fmt.Println("b-tree average:", a2)
}

type intCollection interface {
    mapElements(func(int))
}

type binaryTree struct {
    
    left, right bool
}

func (t *binaryTree) mapElements(visit func(int)) {
    
    if t.left == t.right {
        visit(3)
        visit(1)
        visit(4)
    }
}

type bTree struct {
    
    buckets int
}

func (t *bTree) mapElements(visit func(int)) {
    
    if t.buckets >= 0 {
        visit(1)
        visit(5)
        visit(9)
    }
}
Task: Parametric polymorphism
Go: package main

import "fmt"

func average(c intCollection) float64 {
    var sum, count int
    c.mapElements(func(n int) {
        sum += n
        count++
    })
    return float64(sum) / float64(count)
}

func main() {
    t1 := new(binaryTree)
    t2 := new(bTree)
    a1 := average(t1)
    a2 := average(t2)
    fmt.Println("binary tree average:", a1)
    fmt.Println("b-tree average:", a2)
}

type intCollection interface {
    mapElements(func(int))
}

type binaryTree struct {
    
    left, right bool
}

func (t *binaryTree) mapElements(visit func(int)) {
    
    if t.left == t.right {
        visit(3)
        visit(1)
        visit(4)
    }
}

type bTree struct {
    
    buckets int
}

func (t *bTree) mapElements(visit func(int)) {
    
    if t.buckets >= 0 {
        visit(1)
        visit(5)
        visit(9)
    }
}

Java: public class Tree<T>{
	private T value;
	private Tree<T> left;
	private Tree<T> right;

	public void replaceAll(T value){
		this.value = value;
		if (left != null)
			left.replaceAll(value);
		if (right != null)
			right.replaceAll(value);
	}
}
Task: Parametric polymorphism
Go: package main

import "fmt"

func average(c intCollection) float64 {
    var sum, count int
    c.mapElements(func(n int) {
        sum += n
        count++
    })
    return float64(sum) / float64(count)
}

func main() {
    t1 := new(binaryTree)
    t2 := new(bTree)
    a1 := average(t1)
    a2 := average(t2)
    fmt.Println("binary tree average:", a1)
    fmt.Println("b-tree average:", a2)
}

type intCollection interface {
    mapElements(func(int))
}

type binaryTree struct {
    
    left, right bool
}

func (t *binaryTree) mapElements(visit func(int)) {
    
    if t.left == t.right {
        visit(3)
        visit(1)
        visit(4)
    }
}

type bTree struct {
    
    buckets int
}

func (t *bTree) mapElements(visit func(int)) {
    
    if t.buckets >= 0 {
        visit(1)
        visit(5)
        visit(9)
    }
}

VB: Class BinaryTree(Of T)
    ReadOnly Property Left As BinaryTree(Of T)
    ReadOnly Property Right As BinaryTree(Of T)
    ReadOnly Property Value As T

    Sub New(value As T, Optional left As BinaryTree(Of T) = Nothing, Optional right As BinaryTree(Of T) = Nothing)
        Me.Value = value
        Me.Left = left
        Me.Right = right
    End Sub

    Function Map(Of U)(f As Func(Of T, U)) As BinaryTree(Of U)
        Return New BinaryTree(Of U)(f(Me.Value), Me.Left?.Map(f), Me.Right?.Map(f))
    End Function

    Overrides Function ToString() As String
        Dim sb As New Text.StringBuilder()
        Me.ToString(sb, 0)
        Return sb.ToString()
    End Function

    Private Overloads Sub ToString(sb As Text.StringBuilder, depth As Integer)
        sb.Append(New String(ChrW(AscW(vbTab)), depth))
        sb.AppendLine(Me.Value?.ToString())
        Me.Left?.ToString(sb, depth + 1)
        Me.Right?.ToString(sb, depth + 1)
    End Sub
End Class

Module Program
    Sub Main()
        Dim b As New BinaryTree(Of Integer)(6, New BinaryTree(Of Integer)(5), New BinaryTree(Of Integer)(7))
        Dim b2 As BinaryTree(Of Double) = b.Map(Function(x) x * 0.5)

        Console.WriteLine(b)
        Console.WriteLine(b2)
    End Sub
End Module
Task: Binary strings
C: #include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct str_t {
	size_t len, alloc;
	unsigned char *s;
} bstr_t, *bstr;

#define str_len(s) ((s)->len)
bstr str_new(size_t len)
{
	bstr s = malloc(sizeof(bstr_t));
	if (len < 8) len = 8;
	s->alloc = len;
	s->s = malloc(len);
	s->len = 0;
	return s;
}

void str_extend(bstr s)
{
	size_t ns = s->alloc * 2;
	if (ns - s->alloc > 1024) ns = s->alloc + 1024;
	s->s = realloc(s->s, ns);
	s->alloc = ns;
}

void str_del(bstr s)
{
	free(s->s), free(s);
}

int str_cmp(bstr l, bstr r)
{
	int res, len = l->len;
	if (len > r->len) len = r->len;

	if ((res = memcmp(l->s, r->s, len))) return res;
	return l->len > r->len ? 1 : -1;
}

bstr str_dup(bstr src)
{
	bstr x = str_new(src->len);
	memcpy(x->s, src->s, src->len);
	x->len = src->len;
	return x;
}

bstr str_from_chars(const char *t)
{
	if (!t) return str_new(0);
	size_t l = strlen(t);
	bstr x = str_new(l + 1);
	x->len = l;
	memcpy(x->s, t, l);
	return x;
}

void str_append(bstr s, unsigned char b)
{
	if (s->len >= s->alloc) str_extend(s);
	s->s[s->len++] = b;
}

bstr str_substr(bstr s, int from, int to)
{
	if (!to) to = s->len;
	if (from < 0) from += s->len;
	if (from < 0 || from >= s->len)
		return 0;
	if (to < from) to = from + 1;
	bstr x = str_new(to - from);
	x->len = to - from;
	memcpy(x->s, s->s + from, x->len);
	return x;
}

bstr str_cat(bstr s, bstr s2)
{
	while (s->alloc < s->len + s2->len) str_extend(s);
	memcpy(s->s + s->len, s2->s, s2->len);
	s->len += s2->len;
	return s;
}

void str_swap(bstr a, bstr b)
{
	size_t tz;
	unsigned char *ts;
	tz = a->alloc; a->alloc = b->alloc; b->alloc = tz;
	tz = a->len; a->len = b->len; b->len = tz;
	ts = a->s; a->s = b->s; b->s = ts;
}

bstr str_subst(bstr tgt, bstr pat, bstr repl)
{
	bstr tmp = str_new(0);
	int i;
	for (i = 0; i + pat->len <= tgt->len;) {
		if (memcmp(tgt->s + i, pat->s, pat->len)) {
			str_append(tmp, tgt->s[i]);
			i++;
		} else {
			str_cat(tmp, repl);
			i += pat->len;
			if (!pat->len) str_append(tmp, tgt->s[i++]);
		}
	}
	while (i < tgt->len) str_append(tmp, tgt->s[i++]);
	str_swap(tmp, tgt);
	str_del(tmp);
	return tgt;
}

void str_set(bstr dest, bstr src)
{
	while (dest->len < src->len) str_extend(dest);
	memcpy(dest->s, src->s, src->len);
	dest->len = src->len;
}

int main()
{
	bstr s = str_from_chars("aaaaHaaaaaFaaaaHa");
	bstr s2 = str_from_chars("___.");
	bstr s3 = str_from_chars("");

	str_subst(s, s3, s2);
	printf("%.*s\n", s->len, s->s);

	str_del(s);
	str_del(s2);
	str_del(s3);

	return 0;
}

VB: 
Option Compare Binary 

Option Compare Text
Task: Binary strings
C#: using System;

class Program
{
    static void Main()
    {
        
        var x = "hello world";

        
        x = null;

        
        x = "ab\0";
        Console.WriteLine(x);
        Console.WriteLine(x.Length); 

        
        if (x == "hello")
            Console.WriteLine("equal");
        else
            Console.WriteLine("not equal");

        if (x.CompareTo("bc") == -1)
            Console.WriteLine("x is lexicographically less than 'bc'");

        
        var c = new char[3];
        x.CopyTo(0, c, 0, 3);
        object objecty = new string(c);
        var y = new string(c);

        Console.WriteLine(x == y);      
        Console.WriteLine(x.Equals(y)); 

        Console.WriteLine(x == objecty); 

        
        var empty = "";
        string nullString = null;
        var whitespace = "   ";
        if (nullString == null && empty == string.Empty && 
            string.IsNullOrEmpty(nullString) && string.IsNullOrEmpty(empty) &&
            string.IsNullOrWhiteSpace(nullString) && string.IsNullOrWhiteSpace(empty) &&
            string.IsNullOrWhiteSpace(whitespace))
            Console.WriteLine("Strings are null, empty or whitespace");

        
        x = "helloworld";
        x += (char)83;
        Console.WriteLine(x);

        
        var slice = x.Substring(5, 5);
        Console.WriteLine(slice);

        
        var greeting = x.Replace("worldS", "");
        Console.WriteLine(greeting);

        
        var join = greeting + " " + slice;
        Console.WriteLine(join);
    }
}

C++: #include <iomanip>
#include <iostream>

using namespace std;

string replaceFirst(string &s, const string &target, const string &replace) {
    auto pos = s.find(target);
    if (pos == string::npos) return s;
    return s.replace(pos, target.length(), replace);
}

int main() {

    
    string x = "hello world";

    
    x = "";

    
    x = "ab\0";
    cout << x << '\n';
    cout << x.length() << '\n';

    
    if (x == "hello") {
        cout << "equal\n";
    } else {
        cout << "not equal\n";
    }
    if (x < "bc") {
        cout << "x is lexigraphically less than 'bc'\n";
    }

    
    auto y = x;
    cout << boolalpha << (x == y) << '\n';
    cout << boolalpha << (&x == &y) << '\n';

    
    string empty = "";
    if (empty.empty()) {
        cout << "String is empty\n";
    }

    
    x = "helloworld";
    x += (char)83;
    cout << x << '\n';

    
    auto slice = x.substr(5, 5);
    cout << slice << '\n';

    
    auto greeting = replaceFirst(x, "worldS", "");
    cout << greeting << '\n';

    
    auto join = greeting + ' ' + slice;
    cout << join << '\n';

    return 0;
}
Task: Binary strings
C++: #include <iomanip>
#include <iostream>

using namespace std;

string replaceFirst(string &s, const string &target, const string &replace) {
    auto pos = s.find(target);
    if (pos == string::npos) return s;
    return s.replace(pos, target.length(), replace);
}

int main() {

    
    string x = "hello world";

    
    x = "";

    
    x = "ab\0";
    cout << x << '\n';
    cout << x.length() << '\n';

    
    if (x == "hello") {
        cout << "equal\n";
    } else {
        cout << "not equal\n";
    }
    if (x < "bc") {
        cout << "x is lexigraphically less than 'bc'\n";
    }

    
    auto y = x;
    cout << boolalpha << (x == y) << '\n';
    cout << boolalpha << (&x == &y) << '\n';

    
    string empty = "";
    if (empty.empty()) {
        cout << "String is empty\n";
    }

    
    x = "helloworld";
    x += (char)83;
    cout << x << '\n';

    
    auto slice = x.substr(5, 5);
    cout << slice << '\n';

    
    auto greeting = replaceFirst(x, "worldS", "");
    cout << greeting << '\n';

    
    auto join = greeting + ' ' + slice;
    cout << join << '\n';

    return 0;
}

Go: package main

import (
    "bytes"
    "fmt"
)








func main() {
    
    
    
    b := []byte{'b', 'i', 'n', 'a', 'r', 'y'}
    fmt.Println(b) 
    

    
    
    
    
    var c []byte
    c = b
    fmt.Println(c)

    
    
    
    
    
    fmt.Println(bytes.Equal(b, c)) 

    
    
    
    
    
    
    d := make([]byte, len(b)) 
    copy(d, b)                
    
    d[1] = 'a'
    d[4] = 'n'
    fmt.Println(string(b)) 
    fmt.Println(string(d))

    
    
    
    fmt.Println(len(b) == 0)

    
    
    
    
    
    z := append(b, 'z')
    fmt.Printf("%s\n", z) 

    
    
    sub := b[1:3]
    fmt.Println(string(sub))

    
    
    
    
    
    
    f := bytes.Replace(d, []byte{'n'}, []byte{'m'}, -1)
    fmt.Printf("%s -> %s\n", d, f)

    
    
    
    
    rem := append(append([]byte{}, b[:1]...), b[3:]...)
    fmt.Println(string(rem))
}
Task: Binary strings
C++: #include <iomanip>
#include <iostream>

using namespace std;

string replaceFirst(string &s, const string &target, const string &replace) {
    auto pos = s.find(target);
    if (pos == string::npos) return s;
    return s.replace(pos, target.length(), replace);
}

int main() {

    
    string x = "hello world";

    
    x = "";

    
    x = "ab\0";
    cout << x << '\n';
    cout << x.length() << '\n';

    
    if (x == "hello") {
        cout << "equal\n";
    } else {
        cout << "not equal\n";
    }
    if (x < "bc") {
        cout << "x is lexigraphically less than 'bc'\n";
    }

    
    auto y = x;
    cout << boolalpha << (x == y) << '\n';
    cout << boolalpha << (&x == &y) << '\n';

    
    string empty = "";
    if (empty.empty()) {
        cout << "String is empty\n";
    }

    
    x = "helloworld";
    x += (char)83;
    cout << x << '\n';

    
    auto slice = x.substr(5, 5);
    cout << slice << '\n';

    
    auto greeting = replaceFirst(x, "worldS", "");
    cout << greeting << '\n';

    
    auto join = greeting + ' ' + slice;
    cout << join << '\n';

    return 0;
}

Python: s1 = "A 'string' literal \n"
s2 = 'You may use any of \' or " as delimiter'
s3 =
Task: Binary strings
C++: #include <iomanip>
#include <iostream>

using namespace std;

string replaceFirst(string &s, const string &target, const string &replace) {
    auto pos = s.find(target);
    if (pos == string::npos) return s;
    return s.replace(pos, target.length(), replace);
}

int main() {

    
    string x = "hello world";

    
    x = "";

    
    x = "ab\0";
    cout << x << '\n';
    cout << x.length() << '\n';

    
    if (x == "hello") {
        cout << "equal\n";
    } else {
        cout << "not equal\n";
    }
    if (x < "bc") {
        cout << "x is lexigraphically less than 'bc'\n";
    }

    
    auto y = x;
    cout << boolalpha << (x == y) << '\n';
    cout << boolalpha << (&x == &y) << '\n';

    
    string empty = "";
    if (empty.empty()) {
        cout << "String is empty\n";
    }

    
    x = "helloworld";
    x += (char)83;
    cout << x << '\n';

    
    auto slice = x.substr(5, 5);
    cout << slice << '\n';

    
    auto greeting = replaceFirst(x, "worldS", "");
    cout << greeting << '\n';

    
    auto join = greeting + ' ' + slice;
    cout << join << '\n';

    return 0;
}

VB: 
Option Compare Binary 

Option Compare Text
Task: Binary strings
C#: using System;

class Program
{
    static void Main()
    {
        
        var x = "hello world";

        
        x = null;

        
        x = "ab\0";
        Console.WriteLine(x);
        Console.WriteLine(x.Length); 

        
        if (x == "hello")
            Console.WriteLine("equal");
        else
            Console.WriteLine("not equal");

        if (x.CompareTo("bc") == -1)
            Console.WriteLine("x is lexicographically less than 'bc'");

        
        var c = new char[3];
        x.CopyTo(0, c, 0, 3);
        object objecty = new string(c);
        var y = new string(c);

        Console.WriteLine(x == y);      
        Console.WriteLine(x.Equals(y)); 

        Console.WriteLine(x == objecty); 

        
        var empty = "";
        string nullString = null;
        var whitespace = "   ";
        if (nullString == null && empty == string.Empty && 
            string.IsNullOrEmpty(nullString) && string.IsNullOrEmpty(empty) &&
            string.IsNullOrWhiteSpace(nullString) && string.IsNullOrWhiteSpace(empty) &&
            string.IsNullOrWhiteSpace(whitespace))
            Console.WriteLine("Strings are null, empty or whitespace");

        
        x = "helloworld";
        x += (char)83;
        Console.WriteLine(x);

        
        var slice = x.Substring(5, 5);
        Console.WriteLine(slice);

        
        var greeting = x.Replace("worldS", "");
        Console.WriteLine(greeting);

        
        var join = greeting + " " + slice;
        Console.WriteLine(join);
    }
}

Go: package main

import (
    "bytes"
    "fmt"
)








func main() {
    
    
    
    b := []byte{'b', 'i', 'n', 'a', 'r', 'y'}
    fmt.Println(b) 
    

    
    
    
    
    var c []byte
    c = b
    fmt.Println(c)

    
    
    
    
    
    fmt.Println(bytes.Equal(b, c)) 

    
    
    
    
    
    
    d := make([]byte, len(b)) 
    copy(d, b)                
    
    d[1] = 'a'
    d[4] = 'n'
    fmt.Println(string(b)) 
    fmt.Println(string(d))

    
    
    
    fmt.Println(len(b) == 0)

    
    
    
    
    
    z := append(b, 'z')
    fmt.Printf("%s\n", z) 

    
    
    sub := b[1:3]
    fmt.Println(string(sub))

    
    
    
    
    
    
    f := bytes.Replace(d, []byte{'n'}, []byte{'m'}, -1)
    fmt.Printf("%s -> %s\n", d, f)

    
    
    
    
    rem := append(append([]byte{}, b[:1]...), b[3:]...)
    fmt.Println(string(rem))
}
Task: Binary strings
Java: module BinaryStrings
    {
    @Inject Console console;
    void run()
        {
        Byte[] mutableBytes = new Byte[];       
        Byte[] fixedLength  = new Byte[10];     
        Byte[] literal      = [0, 1, 7, 0xff];  
        console.print($|String creation and assignment:
                       |  mutableBytes={mutableBytes}
                       |  fixedLength={fixedLength}
                       |  literal={literal}
                       |
                     );

        console.print($|Check if a string is empty:
                       |  mutableBytes.empty={mutableBytes.empty}
                       |  fixedLength.empty={fixedLength.empty}
                       |  literal.empty={literal.empty}
                       |
                     );

        mutableBytes += 0;                      
        mutableBytes.add(1);                    
        mutableBytes.addAll(#07FF);             
        console.print($|Append a byte to a string:
                       |  mutableBytes={mutableBytes}
                       |
                     );

        console.print($|String comparison:
                       |  mutableBytes==literal = {mutableBytes==literal}
                       |  fixedLength==literal = {fixedLength==literal}
                       |
                     );

        fixedLength = new Byte[4](i -> literal[i]);     
        val clone = fixedLength.clone();                
        console.print($|String cloning and copying:
                       |  fixedLength={fixedLength}
                       |  clone={clone}
                       |
                     );

        console.print($|Extract a substring from a string:
                       |  mutableBytes[1..2]={mutableBytes[1..2]}
                       |  fixedLength[0..2]={fixedLength[0..2]}
                       |  literal[2..3]={literal[2..3]}
                       |
                     );

        for (Int start = 0; Int index := fixedLength.indexOf(0x01, start); start = index)
            {
            fixedLength[index] = 0x04;
            }
        console.print($|Replace every occurrence of a byte in a string with another string:
                       |  fixedLength={fixedLength}
                       |
                     );

        for (Int start = 0; Int index := mutableBytes.indexOf(#0107, start); start = index)
            {
            mutableBytes.replaceAll(index, #9876);
            }
        console.print($|Replace every occurrence of a string in a string with another string:
                       |  mutableBytes={mutableBytes}
                       |
                     );

        console.print($|Join strings:
                       |  mutableBytes+fixedLength+literal={mutableBytes+fixedLength+literal}
                       |
                     );
        }
    }

Python: s1 = "A 'string' literal \n"
s2 = 'You may use any of \' or " as delimiter'
s3 =