packages feed

atomo-0.4.0.2: src/Atomo/Kernel/Environment.hs

{-# 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