Created
July 9, 2012 01:25
-
-
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.
This file contains hidden or 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
| 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)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) | |
| } | |
| }) ) |
This file contains hidden or 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
| ###################################################################### | |
| # 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 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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).