prefix([],x) = true prefix(h::t,[]) = false prefix(a::u,b::v) = (a == b) and prefix(u,v)
An alternative is as follows. It assumes that the equations are tried in the order written, and that the first one whose pattern matches is chosen.
prefix([],y) = true prefix(x,[]) = false prefix(a::u,a::v) = prefix(u,v) prefix(x,y) = false