packages feed

atomo-0.2.1: 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