Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
1. Это нафиг никому не нужно.
2. Это легко повторить на любом современном языке.
На языке D это будет выглядеть так:
void dump(vars...)()
{
import std.stdio;
static foreach (i, v; vars)
{
write(vars[i].stringof, "=", v, "\t");
}
}
void main()
{
auto x = 123;
auto y = [1, 2];
dump!(x, y); // x=123 y=[1, 2]
} auto y = [[1, 2],[1,2]];Если хочется именно выражения выводить, то тут уже не так красиво:
string dump(string exprs)()
{
import std.algorithm, std.conv;
auto args = exprs.splitter(";").map!q{ "\"" ~ a ~ " = \"," ~ a }.joiner(",'\t',").to!string;
return "import std.stdio; writeln(" ~ args ~ ");";
}
void main()
{
auto x = 123;
auto y = [[1, 2], [3, 4]];
mixin(dump!q{x+45;y}); // x+45 = 168 y = [[1, 2], [3, 4]]
}Всё как вам хочется.
x = 3
l = [2, 4, 10]
s = 'Example'
print(f'{x=}, {x+2=}, {l=}, {s=}')
напечатает:x=3, x+2=5, l=[2, 4, 10], s='Example'julia> mat1 = [1 2 3; 4 5 6]
2×3 Array{Int64,2}:
1 2 3
4 5 6julia> x = [j for j in 1:50]
50-element Array{Int64,1}:
1
2
3
4
5
6
7
8
9
10
11
12
13
⋮
39
40
41
42
43
44
45
46
47
48
49
50main = do
let x :: Int = 1
xs :: [Int] = [1, 2, 3]
arr :: Array Int String = listArray (0, 2) ["a", "b", "c"]
$(traceData 'x)
$(traceData 'xs)
$(traceData 'arr)x = 1
xs = [1,2,3]
arr = array (0,2) [(0,"a"),(1,"b"),(2,"c")]main = do
let arr :: Array (Int, Int) String =
listArray
((0, 0), (2, 2))
[ "a0", "b0", "c0"
, "a1", "b1", "c1"
, "a2", "b2", "c2"
]
$(traceData 'arr)arr = array ((0,0),(2,2)) [((0,0),"a0"),((0,1),"b0"),((0,2),"c0"),((1,0),"a1"),((1,1),"b1"),((1,2),"c1"),((2,0),"a2"),((2,1),"b2"),((2,2),"c2")]#!/usr/bin/python3
x={"red" : "красный", "green": True}
print(x)
{'red': 'красный', 'green': True}
О реализации ввода-вывода с именами