{-# LANGUAGE QuasiQuotes #-} module Atomo.Kernel.Environment where import System.Environment import Atomo load :: VM () load = do ([p|Environment|] =::) =<< eval [e|Object clone|] [p|Environment arguments|] =: liftM (list . map string) (liftIO getArgs) [p|Environment program-name|] =: liftM string $ liftIO getProgName [p|Environment get: (name: String)|] =: getString [e|name|] >>= liftM string . liftIO . getEnv [p|Environment all|] =: do env <- liftIO getEnvironment assocs <- forM env $ \(k, v) -> dispatch (keyword ["->"] [string k, string v]) return $ list assocs