Skip to content

Instantly share code, notes, and snippets.

@jimweirich
Created July 9, 2012 01:25
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
  • Save jimweirich/3073719 to your computer and use it in GitHub Desktop.
Save jimweirich/3073719 to your computer and use it in GitHub Desktop.
Inspired by "Programming with Nothing" http://experthuman.com/programming-with-nothing. See comment below for some details.
require './interface'
puts to_strings(->(limit) {
->(lst) {
->(f) {
->(f) {
->(g) {
->(n) {
f.(g.(g)).(n)
}
}.(->(g) {
->(n) {
f.(g.(g)).(n)
}
})
}.(->(part) {
->(lst) {
->(initial) {
->(f) {
->(p) {
p.(->(l) {
->(r) {
l
}
})
}.(lst).(initial).(->(x) {
f.(->(lst) {
->(p) {
p.(->(l) {
->(r) {
l
}
})
}.(->(p) {
p.(->(l) {
->(r) {
r
}
})
}.(lst))
}.(lst)).(part.(->(lst) {
->(p) {
p.(->(l) {
->(r) {
r
}
})
}.(->(p) {
p.(->(l) {
->(r) {
r
}
})
}.(lst))
}.(lst)).(initial).(f)).(x)
})
}
}
}
}).(lst).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(a) {
->(b) {
a
}
}).(->(a) {
->(b) {
a
}
})).(->(v) {
->(lst) {
->(item) {
->(lst) {
->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(a) {
->(b) {
b
}
}).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(item).(lst))
}
}.(f.(v)).(lst)
}
})
}
}.(->(f) {
->(g) {
->(n) {
f.(g.(g)).(n)
}
}.(->(g) {
->(n) {
f.(g.(g)).(n)
}
})
}.(->(partial) {
->(lst) {
->(n) {
->(n) {
n.(->(x) {
->(a) {
->(b) {
b
}
}
}).(->(a) {
->(b) {
a
}
})
}.(n).(lst).(->(x) {
partial.(->(item) {
->(lst) {
->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(a) {
->(b) {
b
}
}).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(item).(lst))
}
}.(n).(lst)).(->(n) {
->(p) {
p.(->(l) {
->(r) {
r
}
})
}.(n.(->(pair) {
->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(p) {
p.(->(l) {
->(r) {
l
}
})
}.(pair))).(->(p) {
p.(->(l) {
->(r) {
l
}
})
}.(pair))
}).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(f) {
->(v) {
v
}
}).(->(f) {
->(v) {
v
}
})))
}.(n)).(x)
})
}
}
}).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(a) {
->(b) {
a
}
}).(->(a) {
->(b) {
a
}
})).(limit)).(->(n) {
->(n) {
n.(->(x) {
->(a) {
->(b) {
b
}
}
}).(->(a) {
->(b) {
a
}
})
}.(->(f) {
->(g) {
->(n) {
f.(g.(g)).(n)
}
}.(->(g) {
->(n) {
f.(g.(g)).(n)
}
})
}.(->(partial) {
->(a) {
->(b) {
->(a) {
->(b) {
->(bool) {
bool.(->(a) {
->(b) {
b
}
}).(->(a) {
->(b) {
a
}
})
}.(->(a) {
->(b) {
->(n) {
n.(->(x) {
->(a) {
->(b) {
b
}
}
}).(->(a) {
->(b) {
a
}
})
}.(->(a) {
->(b) {
b.(->(n) {
->(p) {
p.(->(l) {
->(r) {
r
}
})
}.(n.(->(pair) {
->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(p) {
p.(->(l) {
->(r) {
l
}
})
}.(pair))).(->(p) {
p.(->(l) {
->(r) {
l
}
})
}.(pair))
}).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(f) {
->(v) {
v
}
}).(->(f) {
->(v) {
v
}
})))
}).(a)
}
}.(a).(b))
}
}.(b).(a))
}
}.(a).(b).(a).(->(x) {
partial.(->(a) {
->(b) {
b.(->(n) {
->(p) {
p.(->(l) {
->(r) {
r
}
})
}.(n.(->(pair) {
->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(p) {
p.(->(l) {
->(r) {
l
}
})
}.(pair))).(->(p) {
p.(->(l) {
->(r) {
l
}
})
}.(pair))
}).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(f) {
->(v) {
v
}
}).(->(f) {
->(v) {
v
}
})))
}).(a)
}
}.(a).(b)).(b).(x)
})
}
}
}).(n).(->(f) {
->(v) {
f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(v)))))))))))))))
}
})).(->(item) {
->(lst) {
->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(a) {
->(b) {
b
}
}).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(item).(lst))
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(f) {
->(v) {
f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(v))))))))))
}
})).(->(item) {
->(lst) {
->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(a) {
->(b) {
b
}
}).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(item).(lst))
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(f) {
->(v) {
f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(v))))))))))
}
}))).(->(item) {
->(lst) {
->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(a) {
->(b) {
b
}
}).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(item).(lst))
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(f) {
->(v) {
f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(v))))))))))
}
}))))).(->(item) {
->(lst) {
->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(a) {
->(b) {
b
}
}).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(item).(lst))
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(f) {
->(v) {
f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(v))))))))))
}
}))))).(->(item) {
->(lst) {
->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(a) {
->(b) {
b
}
}).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(item).(lst))
}
}.(->(f) {
->(v) {
f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(v))))))))))
}
}).(->(item) {
->(lst) {
->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(a) {
->(b) {
b
}
}).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(item).(lst))
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(f) {
->(v) {
f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(v))))))))))
}
})))).(->(item) {
->(lst) {
->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(a) {
->(b) {
b
}
}).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(item).(lst))
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(f) {
->(v) {
f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(v))))))))))
}
}))))).(->(item) {
->(lst) {
->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(a) {
->(b) {
b
}
}).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(item).(lst))
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(f) {
->(v) {
f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(v))))))))))
}
}))))).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(a) {
->(b) {
a
}
}).(->(a) {
->(b) {
a
}
})))))))))).(->(n) {
n.(->(x) {
->(a) {
->(b) {
b
}
}
}).(->(a) {
->(b) {
a
}
})
}.(->(f) {
->(g) {
->(n) {
f.(g.(g)).(n)
}
}.(->(g) {
->(n) {
f.(g.(g)).(n)
}
})
}.(->(partial) {
->(a) {
->(b) {
->(a) {
->(b) {
->(bool) {
bool.(->(a) {
->(b) {
b
}
}).(->(a) {
->(b) {
a
}
})
}.(->(a) {
->(b) {
->(n) {
n.(->(x) {
->(a) {
->(b) {
b
}
}
}).(->(a) {
->(b) {
a
}
})
}.(->(a) {
->(b) {
b.(->(n) {
->(p) {
p.(->(l) {
->(r) {
r
}
})
}.(n.(->(pair) {
->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(p) {
p.(->(l) {
->(r) {
l
}
})
}.(pair))).(->(p) {
p.(->(l) {
->(r) {
l
}
})
}.(pair))
}).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(f) {
->(v) {
v
}
}).(->(f) {
->(v) {
v
}
})))
}).(a)
}
}.(a).(b))
}
}.(b).(a))
}
}.(a).(b).(a).(->(x) {
partial.(->(a) {
->(b) {
b.(->(n) {
->(p) {
p.(->(l) {
->(r) {
r
}
})
}.(n.(->(pair) {
->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(p) {
p.(->(l) {
->(r) {
l
}
})
}.(pair))).(->(p) {
p.(->(l) {
->(r) {
l
}
})
}.(pair))
}).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(f) {
->(v) {
v
}
}).(->(f) {
->(v) {
v
}
})))
}).(a)
}
}.(a).(b)).(b).(x)
})
}
}
}).(n).(->(f) {
->(v) {
f.(f.(f.(v)))
}
})).(->(item) {
->(lst) {
->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(a) {
->(b) {
b
}
}).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(item).(lst))
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(f) {
->(v) {
f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(v))))))))))
}
})).(->(item) {
->(lst) {
->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(a) {
->(b) {
b
}
}).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(item).(lst))
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(f) {
->(v) {
f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(v))))))))))
}
}))).(->(item) {
->(lst) {
->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(a) {
->(b) {
b
}
}).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(item).(lst))
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(f) {
->(v) {
f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(v))))))))))
}
}))))).(->(item) {
->(lst) {
->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(a) {
->(b) {
b
}
}).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(item).(lst))
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(f) {
->(v) {
f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(v))))))))))
}
}))))).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(a) {
->(b) {
a
}
}).(->(a) {
->(b) {
a
}
})))))).(->(n) {
n.(->(x) {
->(a) {
->(b) {
b
}
}
}).(->(a) {
->(b) {
a
}
})
}.(->(f) {
->(g) {
->(n) {
f.(g.(g)).(n)
}
}.(->(g) {
->(n) {
f.(g.(g)).(n)
}
})
}.(->(partial) {
->(a) {
->(b) {
->(a) {
->(b) {
->(bool) {
bool.(->(a) {
->(b) {
b
}
}).(->(a) {
->(b) {
a
}
})
}.(->(a) {
->(b) {
->(n) {
n.(->(x) {
->(a) {
->(b) {
b
}
}
}).(->(a) {
->(b) {
a
}
})
}.(->(a) {
->(b) {
b.(->(n) {
->(p) {
p.(->(l) {
->(r) {
r
}
})
}.(n.(->(pair) {
->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(p) {
p.(->(l) {
->(r) {
l
}
})
}.(pair))).(->(p) {
p.(->(l) {
->(r) {
l
}
})
}.(pair))
}).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(f) {
->(v) {
v
}
}).(->(f) {
->(v) {
v
}
})))
}).(a)
}
}.(a).(b))
}
}.(b).(a))
}
}.(a).(b).(a).(->(x) {
partial.(->(a) {
->(b) {
b.(->(n) {
->(p) {
p.(->(l) {
->(r) {
r
}
})
}.(n.(->(pair) {
->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(p) {
p.(->(l) {
->(r) {
l
}
})
}.(pair))).(->(p) {
p.(->(l) {
->(r) {
l
}
})
}.(pair))
}).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(f) {
->(v) {
v
}
}).(->(f) {
->(v) {
v
}
})))
}).(a)
}
}.(a).(b)).(b).(x)
})
}
}
}).(n).(->(f) {
->(v) {
f.(f.(f.(f.(f.(v)))))
}
})).(->(item) {
->(lst) {
->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(a) {
->(b) {
b
}
}).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(item).(lst))
}
}.(->(f) {
->(v) {
f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(v))))))))))
}
}).(->(item) {
->(lst) {
->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(a) {
->(b) {
b
}
}).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(item).(lst))
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(f) {
->(v) {
f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(v))))))))))
}
})))).(->(item) {
->(lst) {
->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(a) {
->(b) {
b
}
}).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(item).(lst))
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(f) {
->(v) {
f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(v))))))))))
}
}))))).(->(item) {
->(lst) {
->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(a) {
->(b) {
b
}
}).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(item).(lst))
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(f) {
->(v) {
f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(v))))))))))
}
}))))).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(a) {
->(b) {
a
}
}).(->(a) {
->(b) {
a
}
})))))).(->(f) {
->(g) {
->(n) {
f.(g.(g)).(n)
}
}.(->(g) {
->(n) {
f.(g.(g)).(n)
}
})
}.(->(part) {
->(result) {
->(n) {
->(a) {
->(b) {
->(n) {
n.(->(x) {
->(a) {
->(b) {
b
}
}
}).(->(a) {
->(b) {
a
}
})
}.(->(a) {
->(b) {
b.(->(n) {
->(p) {
p.(->(l) {
->(r) {
r
}
})
}.(n.(->(pair) {
->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(p) {
p.(->(l) {
->(r) {
l
}
})
}.(pair))).(->(p) {
p.(->(l) {
->(r) {
l
}
})
}.(pair))
}).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(f) {
->(v) {
v
}
}).(->(f) {
->(v) {
v
}
})))
}).(a)
}
}.(a).(b))
}
}.(n).(->(f) {
->(v) {
f.(f.(f.(f.(f.(f.(f.(f.(f.(v)))))))))
}
}).(->(item) {
->(lst) {
->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(a) {
->(b) {
b
}
}).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(item).(lst))
}
}.(n).(result)).(->(x) {
part.(->(item) {
->(lst) {
->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(a) {
->(b) {
b
}
}).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(item).(lst))
}
}.(->(f) {
->(g) {
->(n) {
f.(g.(g)).(n)
}
}.(->(g) {
->(n) {
f.(g.(g)).(n)
}
})
}.(->(partial) {
->(a) {
->(b) {
->(a) {
->(b) {
->(bool) {
bool.(->(a) {
->(b) {
b
}
}).(->(a) {
->(b) {
a
}
})
}.(->(a) {
->(b) {
->(n) {
n.(->(x) {
->(a) {
->(b) {
b
}
}
}).(->(a) {
->(b) {
a
}
})
}.(->(a) {
->(b) {
b.(->(n) {
->(p) {
p.(->(l) {
->(r) {
r
}
})
}.(n.(->(pair) {
->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(p) {
p.(->(l) {
->(r) {
l
}
})
}.(pair))).(->(p) {
p.(->(l) {
->(r) {
l
}
})
}.(pair))
}).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(f) {
->(v) {
v
}
}).(->(f) {
->(v) {
v
}
})))
}).(a)
}
}.(a).(b))
}
}.(b).(a))
}
}.(a).(b).(a).(->(x) {
partial.(->(a) {
->(b) {
b.(->(n) {
->(p) {
p.(->(l) {
->(r) {
r
}
})
}.(n.(->(pair) {
->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(p) {
p.(->(l) {
->(r) {
l
}
})
}.(pair))).(->(p) {
p.(->(l) {
->(r) {
l
}
})
}.(pair))
}).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(f) {
->(v) {
v
}
}).(->(f) {
->(v) {
v
}
})))
}).(a)
}
}.(a).(b)).(b).(x)
})
}
}
}).(n).(->(f) {
->(v) {
f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(v))))))))))
}
})).(result)).(->(f) {
->(g) {
->(n) {
f.(g.(g)).(n)
}
}.(->(g) {
->(n) {
f.(g.(g)).(n)
}
})
}.(->(part) {
->(num) {
->(denom) {
->(a) {
->(b) {
->(n) {
n.(->(x) {
->(a) {
->(b) {
b
}
}
}).(->(a) {
->(b) {
a
}
})
}.(->(a) {
->(b) {
b.(->(n) {
->(p) {
p.(->(l) {
->(r) {
r
}
})
}.(n.(->(pair) {
->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(p) {
p.(->(l) {
->(r) {
l
}
})
}.(pair))).(->(p) {
p.(->(l) {
->(r) {
l
}
})
}.(pair))
}).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(f) {
->(v) {
v
}
}).(->(f) {
->(v) {
v
}
})))
}).(a)
}
}.(a).(b))
}
}.(denom).(num).(->(x) {
->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(part.(->(a) {
->(b) {
b.(->(n) {
->(p) {
p.(->(l) {
->(r) {
r
}
})
}.(n.(->(pair) {
->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(n) {
->(f) {
->(v) {
f.(n.(f).(v))
}
}
}.(->(p) {
p.(->(l) {
->(r) {
l
}
})
}.(pair))).(->(p) {
p.(->(l) {
->(r) {
l
}
})
}.(pair))
}).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(f) {
->(v) {
v
}
}).(->(f) {
->(v) {
v
}
})))
}).(a)
}
}.(num).(denom)).(denom)).(x)
}).(->(f) {
->(v) {
v
}
})
}
}
}).(n).(->(f) {
->(v) {
f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(v))))))))))
}
})).(x)
})
}
}
}).(->(l) {
->(r) {
->(f) {
f.(l).(r)
}
}
}.(->(a) {
->(b) {
a
}
}).(->(a) {
->(b) {
a
}
})).(n))))
})
}.(->(f) {
->(v) {
f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(f.(v))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
}
}) )
######################################################################
# Lambda-Calculus to Ruby Interface Methods
######################################################################
def to_integer(lex)
lex.(->(n) { n + 1 }).(0)
end
def to_boolean(lex)
lex.(true).(false)
end
def pair_left(pair)
pair.(->(a) { ->(b) { a } } )
end
def pair_right(pair)
pair.(->(a) { ->(b) { b } } )
end
def list_empty?(lst)
to_boolean(pair_left(lst))
end
def list_head(lst)
pair_left(pair_right(lst))
end
def list_tail(lst)
pair_right(pair_right(lst))
end
def to_list(lst)
result = []
while ! list_empty?(lst)
result << list_head(lst)
lst = list_tail(lst)
end
return result
end
def to_integers(lst)
to_list(lst).map { |x| to_integer(x) }
end
def to_char(n)
"0123456789BFiuz"[to_integer(n)]
end
def to_string(s)
to_list(s).map { |c| to_char(c) }.join
end
def to_strings(lst)
to_list(lst).map { |x| to_string(x) }
end
@jimweirich
Copy link
Author

Inspired by Tom Stuart's "Programming with Nothing" (http://experthuman.com/programming-with-nothing), although I did my own implementation. It runs in under a minute on my Macbook Pro.

This was originally written using constants for code snippets (just like Tom Stuart did). I then wrote a "compiler" that read the individual snippets and built the complete lambda expression from scratch. Then I ran the expression through Ripper and Sorcerer to get the indented version of the code you see here.

I'm adding annotations to the original source code file and will release that when its done.

Oh, you want to know what it does? Either read Tom Stuart's original article, or just run the code (which will take a minute or so).

@jimweirich
Copy link
Author

You can see a annotated version of this at https://github.com/jimweirich/lambda_fizz

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment