(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] |