qsort [] = []
qsort (h:t) =
qsort [x | x <- t, x <= h] ++ [h] ++ qsort [x | x <- t, x > h]
data Bar = Bar {
testDataFoo = [Foo ('d', 'k', 21), Foo ('a', 'b', 1), Foo ('x', 'y', 34)]
testDataBar = [Bar 'd' 'k' 21, Bar 'a' 'b' 1, Bar 'x' 'y' 34]
main = do
print $ qsort testDataFoo
print $ qsort testDataBar
cXNvcnQgW10gPSBbXQpxc29ydCAoaDp0KSA9IAogICAgcXNvcnQgW3ggfCB4IDwtIHQsIHggPD0gaF0gKysgW2hdICsrIHFzb3J0IFt4IHwgeCA8LSB0LCB4ID4gaF0KCmRhdGEgRm9vID0gRm9vIChDaGFyLCBDaGFyLCBJbnQpIGRlcml2aW5nIChFcSwgU2hvdykKCmRhdGEgQmFyID0gQmFyIHsKCWNoMSA6OiBDaGFyLAoJY2gyIDo6IENoYXIsCglvcmQgOjogSW50Cn0gZGVyaXZpbmcgKEVxLCBTaG93KQoKaW5zdGFuY2UgT3JkIEZvbyB3aGVyZQoJY29tcGFyZSAoRm9vIChfLCBfLCB4KSkgKEZvbyAoXywgXywgeSkpID0gY29tcGFyZSB4IHkKCmluc3RhbmNlIE9yZCBCYXIgd2hlcmUKCWNvbXBhcmUgKEJhciBfIF8geCkgKEJhciBfIF8geSkgPSBjb21wYXJlIHggeQoKdGVzdERhdGFGb28gPSBbRm9vICgnZCcsICdrJywgMjEpLCBGb28gKCdhJywgJ2InLCAxKSwgRm9vICgneCcsICd5JywgMzQpXQp0ZXN0RGF0YUJhciA9IFtCYXIgJ2QnICdrJyAyMSwgQmFyICdhJyAnYicgMSwgQmFyICd4JyAneScgMzRdCgptYWluID0gZG8KCXByaW50ICQgcXNvcnQgdGVzdERhdGFGb28KCXByaW50ICQgcXNvcnQgdGVzdERhdGFCYXIK
[Foo ('a','b',1),Foo ('d','k',21),Foo ('x','y',34)]
[Bar {ch1 = 'a', ch2 = 'b', ord = 1},Bar {ch1 = 'd', ch2 = 'k', ord = 21},Bar {ch1 = 'x', ch2 = 'y', ord = 34}]