bubblesort xs
| xs == xs' = xs'
where xs' = bubblesortIterate xs
where bubblesortIterate x:xs@lst =
| nil . xs = xs
| x
<= head xs
= x:bubblesortIterate xs
where bubblesortSwap x:y:xs = y:x:xs
bubblesort [4,2,40,0,13,10]
YnViYmxlc29ydCB4cwoJfCB4cyA9PSB4cycgPSB4cycKCXwgb3RoZXJ3aXNlID0gYnViYmxlc29ydCB4cycKCXdoZXJlIHhzJyA9IGJ1YmJsZXNvcnRJdGVyYXRlIHhzCgl3aGVyZSBidWJibGVzb3J0SXRlcmF0ZSB4OnhzQGxzdCA9CgkJfCBuaWwgLiB4cyAgICAgPSB4cwoJCXwgeCA8PSBoZWFkIHhzID0geDpidWJibGVzb3J0SXRlcmF0ZSB4cwoJCXwgb3RoZXJ3aXNlICAgID0gYnViYmxlc29ydFN3YXAgbHN0Cgl3aGVyZSBidWJibGVzb3J0U3dhcCB4Onk6eHMgPSB5Ong6eHMKCmJ1YmJsZXNvcnQgWzQsMiw0MCwwLDEzLDEwXQ==