runghc replacement with automatic caching