This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var noop = () => {} | |
var compose = (f1, f2) => (...args) => f1(f2(...args)) | |
var range = (start, end) => { | |
let n = start | |
let f = (next, complete) => { | |
if (n <= end) { | |
next(n++) | |
f(next, complete) | |
} else { | |
complete() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
type PrimitiveData = string | number | boolean | null | |
type ListData = LensData[] | |
type ObjectData = { | |
[key: string]: LensData | |
} | |
type LensData = PrimitiveData | ListData | ObjectData |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function pipe<A, B>(a: A, f: (a: A) => B): B; | |
function pipe<A, B, C>(a: A, f: (a: A) => B, g: (b: B) => C): C; | |
function pipe<A, B, C, D>( | |
a: A, | |
f: (a: A) => B, | |
g: (b: B) => C, | |
h: (c: C) => D | |
): D; | |
function pipe<A, B, C, D, E>( | |
a: A, |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function pipe<A, B>(a: A, f: (a: A) => B): B; | |
function pipe<A, B, C>(a: A, f: (a: A) => B, g: (b: B) => C): C; | |
function pipe<A, B, C, D>( | |
a: A, | |
f: (a: A) => B, | |
g: (b: B) => C, | |
h: (c: C) => D | |
): D; | |
function pipe<A, B, C, D, E>( | |
a: A, |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
interface BtreeVisitor<T, TT> { | |
leaf: (value: T) => TT; | |
branch: (left: TT, right: TT) => TT; | |
} | |
interface Btree<T> { | |
<TT>(visitor: BtreeVisitor<T, TT>): TT; | |
} | |
const leaf = <T>(value: T): Btree<T> => { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
use std::collections::HashMap; | |
extern crate peg; | |
#[derive(Debug, Clone, PartialEq, Eq, Hash)] | |
struct Variable(String); | |
#[derive(Debug, Clone, PartialEq, Eq, Hash)] | |
enum Value { | |
Integer(i32), | |
Variable(Variable), |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
domain TodoInputDomain { | |
state TodoInput = '' | |
command updateTodoInput(newTodoInput: string) { | |
return TodoInput.new(newTodoInput) | |
} | |
} | |
type Todo = { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const first = source => { | |
if (!source) return 'empty source' | |
return [source[0], source.slice(1)] | |
} | |
// console.log('first', first('abc'), first('')) | |
const inject = value => source => [value, source] | |
// console.log('inject', inject(1)('123'), inject(2)('')) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// library | |
type Handler<T, R> = [new (...args: any) => T, (input: T) => R]; | |
type HandlerPattern<T extends Handler<any, any>> = T extends Handler< | |
infer Pattern, | |
any | |
> | |
? Pattern | |
: unknown; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
type Prettier<T> = { | |
[key in keyof T]: T[key]; | |
} | |
type Tagged<Tag extends string> = { | |
tag: Tag; | |
}; | |
type Field<Key extends string, Value> = { | |
[key in Key]: Value; |
NewerOlder