Skip to content

Instantly share code, notes, and snippets.

function stream(initArr, fn){
initArr = Array.prototype.slice.call(initArr||[],0);
initArr._fn = fn;
return initArr;
}
function streamRef(arr, i){
if(arr[i])return arr[i];
if(!arr._fn)return null;
while(arr._fn&&arr.length<=i){
var res = arr._fn(arr[arr.length-1], arr);
@k10526
k10526 / stringify
Last active November 12, 2015 14:29
function stringify(o){
var visited = [];
var q = [{type: typeof o, target: o}];
var res = '';
var t;
while(t=q.shift()){
var tar = t.target;
if(!tar){
res += 'null';
continue;
var noop = [];
function clone (arr){
return arr.slice(0);
}
function stream(arr){
if(arr.length === 0) return noop;
return cons(function (){return arr[0]}, function (){ return stream(arr.slice(1))})
}
function cons(head, tail){
@k10526
k10526 / demo1.html
Last active May 12, 2016 09:40
test
<html>
<body>
<button id='button'>up</button>
<div id='display'></div>
<script>
function coroutine(gen){
return function(...args){
const genObj = gen(...args);
genObj.next();
return genObj;
{
function makeBody(body, ex, im){
return `function (${im}) {
${body}
return ${ex};
}`
}
const im_re = /(?:^|\s|;)import +(\S[\S\s]*?) +from +"(\S+)" *;/;
const ex_re = /(?:^|\s|;)export +default +(\S+);$/;
@k10526
k10526 / abortable-promise.js
Last active August 13, 2019 00:02
AbortablePromise
class AbortablePromise{
constructor(fn, parent) {
this._reject;
this._aborted = false;
this._parent = parent;
this._promise = Promise.race([
new Promise((res, rej) => {
this._reject = rej;
}),
new Promise(fn)
@k10526
k10526 / string.js
Created March 8, 2020 13:57
unicode
const forEachChar = (str, fn) => {
if (str.length === 0) {
return;
}
const iter = str[Symbol.iterator]();
let it = iter.next();
let prev = it.value;
do {
/**
* @template T1
*/
class CacheChain {
/**
* @param {function():*|function():CacheChain<*>} fn
*/
constructor(fn) {
this._fn = fn;