haskell partial solution added