Skip to content

Instantly share code, notes, and snippets.

View awto's full-sized avatar

Vitalii Akimov awto

View GitHub Profile
@awto
awto / impl.js
Last active February 19, 2018 19:40
export function generator() {
return {
[Symbol.iterator]() { return this },
scope(step) {
this.$step = step
return this
},
yld(value, step) {
this.value = value;
this.$step = step;
function* agen() {
for(let i = 0; i < 1000;i++) {
yield i
yield i+1
}
}
function* wrap(s) {
for(const i of s) {
yield 3*i
function* generator() {
for(let i = 0; i < 10000;i++) {
yield i
yield i+1
}
}
import * as M from "@effectful/es-rt/opts/defunct-inline";
function generator() {
var generator = M.generator();
generator.next = generator_1;
generator.$step = 0;
return generator;
}
function generator_1(p) {
import * as M from "@effectful/es-rt/opts/defunct-inline";
function generator() {
var generator = M.generator();
generator.next = generator_1;
generator.$step = 0;
return generator;
function generator_1(p) {
switch (generator.$step) {
@awto
awto / simple.js
Last active February 20, 2018 19:01
import * as M from "@effectful/es-rt/opts/inline";
function generator() {
var generator = M.generator();
generator.$step = generator_1;
return generator;
function generator_1() {
generator.$step = generator_2;
generator.value = 1;
@awto
awto / abstract.js
Last active February 19, 2018 19:40
faster generator article - abstract simple
import * as M from "@effectful/es-rt";
function generator() {
var generator = M.generator();
return generator.scope(generator_1);
function generator_1() {
return this.yld(1, generator_2);
}
@awto
awto / fg-bm1.js
Created February 16, 2018 18:36
Faster generators article - small benchmark
function* generator() {
yield 1;
yield 2;
}
@awto
awto / stopThread.js
Created December 31, 2017 20:30
decoupling article - stopThread
async function* stopThread(input) {
for await(const i of input) {
yield i
if (i.type === "drop" || i.type === "dragcancel" || i.type === "remove")
break
}
}
@awto
awto / animRemove.js
Created December 31, 2017 20:30
decoupling article - animRemove
async function* animRemove(input) {
for await(const i of input) {
if (i.type === "remove") {
const el = i.element
const box = el.getBoundingClientRect()
for await(const j of anim()) {
el.style.width = `${box.width*(1-j)}px`
el.style.height = `${box.height*(1-j)}px`
el.style.top = `${box.y+window.pageYOffset+box.height*j/2}px`
el.style.left = `${box.x+window.pageXOffset+box.width*j/2}px`