add smart eshell function, add haskell src snippet