This haskell source was written by Asano.