(cat.1) cat([], B) = B (cat.3) cat(A, B) = head(A):cat(tail(A), B)
Evaluation is as follows.
  cat([1,2,3], [4,5,6])
    = 1:cat([2,3], [4,5,6])       by (cat.3)
    = 1:(2:cat([3], [4,5,6]))     by (cat.3)
    = 1:(2:(3:cat([], [4,5,6])))  by (cat.3)
    = 1:(2:([3,4,5,6]))
    = 1:([2,3,4,5,6])
    = [1,2,3,4,5,6]