Oh, so you're using a functional language? Cool, I have set theory in bash:
$ mkdir 0$ function succ () { [ $# = 2 ] && cp -r "$1/." "$2/" && cp -r "$1" "$2/"; }$ succ 0 1$ succ 1 2$ succ 2 3