packages feed

ministg-0.1: src/Ministg/CallStack.hs

-----------------------------------------------------------------------------
-- |
-- Module      : Ministg.CallStack
-- Copyright   : (c) 2009 Bernie Pope 
-- License     : BSD-style
-- Maintainer  : bjpop@csse.unimelb.edu.au
-- Stability   : experimental
-- Portability : ghc
--
-- Stack of program annotations. Simulate a call stack.
-----------------------------------------------------------------------------

module Ministg.CallStack (CallStack, push, showCallStack, prettyCallStack) where

import Ministg.Pretty

type CallStack = [String]

push :: String -> CallStack -> CallStack
push = (:)

showCallStack :: CallStack -> String
showCallStack = unlines

prettyCallStack :: CallStack -> Doc
prettyCallStack [] = empty
prettyCallStack stack = char '<' <> hcat (punctuate (text "|") (map text stack)) <> char '>'