bubblesort [4,2,40,0,13,10]
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
YnViYmxlc29ydCBbNCwyLDQwLDAsMTMsMTBdCgpidWJibGVzb3J0IHhzCgl8IHhzID09IHhzJyA9IHhzJwoJfCBvdGhlcndpc2UgPSBidWJibGVzb3J0IHhzJwoJd2hlcmUKCQl4cycgPSBidWJibGVzb3J0SXRlcmF0ZSB4cwoJCWJ1YmJsZXNvcnRJdGVyYXRlIGxzdEAoeDp4cykKCQkJfCBuaWwgLiB4cyAgICAgPSB4cwoJCQl8IHggPD0gaGVhZCB4cyA9IHg6YnViYmxlc29ydEl0ZXJhdGUgeHMKCQkJfCBvdGhlcndpc2UgICAgPSBidWJibGVzb3J0U3dhcCBsc3QKCQlidWJibGVzb3J0U3dhcCAoeDp5OnhzKSA9IHk6eDp4cw==