http://en.wikipedia.org/wiki/SKI_combinator_calculus
More recently I found out about the U combinator which is a single combinator that can be used to define S & K:
http://en.wikipedia.org/wiki/Iota_and_Jot
Having a system that implemented recursion using the Y combinator in terms of S & K and have it actually compute stuff was rather amusing. I'd be fascinated to see what it would look like using just U.
You might enjoy this:
It's worth noting, BTW, in case anyone is still following this thread, that what is going on here in all of these single-instruction languages is not particularly interesting. You're just encoding the program semantics in the arguments, or in the structure of the tree, or the length of the program, or something like that, rather than in the instructions.
http://events.ccc.de/congress/2012/Fahrplan/events/5265.en.h...
http://gergo.erdi.hu/blog/2013-10-05-yo_dawg_i_heard_you_lik...
It seems like this wouldn't perform very well in the real world for most applications, but I could see it being useful for very simple architectures.
The Manchester Baby was the first programmable electronic computer and was close to a single instruction computer. It can emulate the single instruction computer with 5 of its 7 instructions: load, subtract, store, skip if negative and jump. The two extra instructions were halt and relative jump.
http://en.wikipedia.org/wiki/Manchester_Small-Scale_Experime...
[1] http://homepage.cs.uiowa.edu/~jones/arch/risc/ [2] http://homepage.divms.uiowa.edu/~jones/voting/pictures/ [3] http://homepage.cs.uiowa.edu/~jones/voting/
http://en.wikipedia.org/wiki/Wolfram%27s_2-state_3-symbol_Tu...