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 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 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).