Skip to content

Instantly share code, notes, and snippets.

@yuki-takeichi
yuki-takeichi / cps.js
Created November 18, 2019 16:21
Yoneda as CPS transformer
const yoneda = f => cont => a => cont(f(a))
const cpsTransform = yoneda
const f = x => x + 1
const g = x => x * 2
const apply = (g, f) => x => g(f(x))
/*
apply(cpsTransform(f), cpsTransform(g))(cont)
@yuki-takeichi
yuki-takeichi / cps.v
Created November 30, 2019 15:25
Yoneda as a CPS transformer
(* http://m-hiyama.hatenablog.com/entry/20080116/1200468797 *)
Module cps.
(* CPS transformation *)
Definition yoneda (X Y A: Type) (f: X -> Y) : (Y -> A) -> X -> A :=
fun cont: Y -> A => fun x: X => cont (f x).
Definition yoneda_objpart (X A: Type) (x: X) : (X -> A) -> A :=
fun cont: X -> A => cont(x).