// concat.oad - test concatentation operator
using namespace oadl;
proc main()
{
var a, b;
"Scalar ## scalar\n";
a = 1.0;
b = 2.0;
"", a ## b, '\n';
"Array ## array\n";
a = [3,4,5].iterate();
b = [4,5].iterate() + 3*4*5;
"", a ## b, '\n';
"Array ## scalar (same type)\n";
a = [1,2,3];
b = 4;
"", a ## b, '\n';
"Scalar ## array (same type)\n";
a = 1;
b = [2,3,4];
"", a ## b, '\n';
"Array ## scalar (with promote)\n";
a = [1,2,3];
b = 4.0;
"", a ## b, '\n';
"Scalar ## array (with promote)\n";
a = 1.0;
b = [2,3,4];
"", a ## b, '\n';
"Array ## scalar (with convert-to-list)\n";
a = [1,2,3];
b = `+;
"", a ## b, '\n';
"Scalar ## array (with convert-to-list)\n";
a = `+;
b = [2,3,4];
"", a ## b, '\n';
"Array ## list\n";
a = [1,2,3];
b = {true, 5.0, 6};
"", a ## b, '\n';
"2d array + 1d array\n";
a = [3,4].iterate();
b = 4->iterate();
"", a ## b, "\n\n";
"", b ## a, '\n';
}