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