order p xs = as where
  (as, bs) = go xs bs []
  go [] as bs = (as, bs)
  go (x:xs) as bs = if p x
    then go xs (x:as) bs
    else go xs as (x:bs)

이렇게 하면 difference list 안해도 되고 리스트 중복생성도 없음 ㅇㅅㅇ