Az ML programozási nyelv

Appendix: a @ operátor definíciója

Az összefűzés operátor a "/usr/local/software/nj-sml-93/src/boot/perv.sml" file -ban van definiálva a következőképpen:

infixr 5 :: @ fun op @(x,nil) = x | op @(x,l) = let fun f(nil,l) = l | f([a],l) = a::l | f([a,b],l) = a::b::l | f([a,b,c],l) = a::b::c::l | f(a::b::c::d::r,l) = a::b::c::d::f(r,l) in f(x,l) end

Ez a verzió ekvivalens az egyszerűbb

infixr 5 :: @ fun nil @ l = l | (h::t)@ l = h::(t@l)

definícióval, de gyorsabban fut annál.