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