#!/usr/bin/env rdmd
import std.stdio;
import std.typecons;
struct Array(T) {
private T[] arr;
mixin Proxy!arr;
this(T[] a) { arr = a; }
@property
void each(void delegate(T) dg) {
foreach(a; arr) {
dg(a);
}
}
}
void main(in string[] args) {
Array!int ar = [1,2,3,4];
ar.each(a => writeln(a));
}
IyEvdXNyL2Jpbi9lbnYgcmRtZAppbXBvcnQgc3RkLnN0ZGlvOwppbXBvcnQgc3RkLnR5cGVjb25zOwoKc3RydWN0IEFycmF5KFQpIHsKICBwcml2YXRlIFRbXSBhcnI7CiAgbWl4aW4gUHJveHkhYXJyOwogIHRoaXMoVFtdIGEpIHsgYXJyID0gYTsgfQoKICBAcHJvcGVydHkKICB2b2lkIGVhY2godm9pZCBkZWxlZ2F0ZShUKSBkZykgewogICAgZm9yZWFjaChhOyBhcnIpIHsKICAgICAgZGcoYSk7CiAgICB9CiAgfQp9Cgp2b2lkIG1haW4oaW4gc3RyaW5nW10gYXJncykgewogIEFycmF5IWludCBhciA9IFsxLDIsMyw0XTsKICBhci5lYWNoKGEgPT4gd3JpdGVsbihhKSk7Cn0K