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]
YnViYmxlc29ydCB4cyA9Cgl8IHhzID09IHhzJyA9IHhzJwoJfCBvdGhlcndpc2UgPSBidWJibGVzb3J0IHhzJwoJd2hlcmUgeHMnID0gYnViYmxlc29ydEl0ZXJhdGUgeHMKCXdoZXJlIGJ1YmJsZXNvcnRJdGVyYXRlIHg6eHNAbHN0ID0KCQl8IG5pbCAuIHhzICAgICA9IHhzCgkJfCB4IDw9IGhlYWQgeHMgPSB4OmJ1YmJsZXNvcnRJdGVyYXRlIHhzCgkJfCBvdGhlcndpc2UgICAgPSBidWJibGVzb3J0U3dhcCBsc3QKCXdoZXJlIGJ1YmJsZXNvcnRTd2FwIHg6eTp4cyA9IHk6eDp4cwoKYnViYmxlc29ydCBbNCwyLDQwLDAsMTMsMTBd