function Lazy(fn) {
    var evaluated = null;
    return function () {
        var a = [];
        for (var _i = 0; _i < arguments.length; _i++) {
            a[_i] = arguments[_i];
        }
        return (evaluated !== null && evaluated !== void 0 ? evaluated : (evaluated = fn.apply(void 0, a)));
    };
}
// lazy evaluation, trying to achieve a behavior similar to imports
lazy evaluation, trying to achieve a behavior similar to imports
lazy evaluation trying to achieve a behavior similar to imports
function Lazy(fn) {
    var evaluated = null;
    return function () {
        var a = [];
        for (var _i = 0; _i < arguments.length; _i++) {
            a[_i] = arguments[_i];
        }
        return (evaluated !== null && evaluated !== void 0 ? evaluated : (evaluated = fn.apply(void 0, a)));
    };
}
function Lazy ( fn ) { var evaluated = null ; return function ( ) { var a = [ ] ; for ( var _i = 0 ; _i < arguments . length ; _i ++ ) { a [ _i ] = arguments [ _i ] ; } return ( evaluated !== null && evaluated !== void 0 ? evaluated : ( evaluated = fn . apply ( void 0 , a ) ) ) ; } ; }
lazy evaluation, trying to achieve a behavior similar to imports
lazy evaluation trying to achieve a behavior similar to imports