bubblesort xs
| xs == xs' = xs'
where
xs' = bubblesortIterate xs
bubblesortIterate lst@(x:xs)
| nil . xs = xs
| x
<= head xs
= x:bubblesortIterate xs
bubblesortSwap (x:y:xs) = y:x:xs
YnViYmxlc29ydCB4cwoJfCB4cyA9PSB4cycgPSB4cycKCXwgb3RoZXJ3aXNlID0gYnViYmxlc29ydCB4cycKCXdoZXJlCgkJeHMnID0gYnViYmxlc29ydEl0ZXJhdGUgeHMKCQlidWJibGVzb3J0SXRlcmF0ZSBsc3RAKHg6eHMpCgkJCXwgbmlsIC4geHMgICAgID0geHMKCQkJfCB4IDw9IGhlYWQgeHMgPSB4OmJ1YmJsZXNvcnRJdGVyYXRlIHhzCgkJCXwgb3RoZXJ3aXNlICAgID0gYnViYmxlc29ydFN3YXAgbHN0CgkJYnViYmxlc29ydFN3YXAgKHg6eTp4cykgPSB5Ong6eHM=