The Oberserve
library containing combinators to observe data.
Author: Bernd Brassle, Olaf Chitil, Michael Hanus, Frank Huch
Version: February 2023
observe
:: Data a => (a -> String -> Int -> [Int] -> a) -> String -> a -> a
The basic operation to observe the evaluation of data structures. |
observeG
:: (a -> String -> Int -> [Int] -> a) -> String -> a -> a
The basic operation to observe the evaluation of ground data structures. |
oLit
:: Show a => a -> String -> Int -> [Int] -> a
|
oInt
:: Int -> String -> Int -> [Int] -> Int
|
oBool
:: Bool -> String -> Int -> [Int] -> Bool
|
oChar
:: Char -> String -> Int -> [Int] -> Char
|
oFloat
:: Float -> String -> Int -> [Int] -> Float
|
oOpaque
:: a -> String -> Int -> [Int] -> a
|
oOpaqueConstr
:: String -> a -> String -> Int -> [Int] -> a
|
oList
:: Data a => (a -> String -> Int -> [Int] -> a) -> [a] -> String -> Int -> [Int] -> [a]
|
oString
:: String -> String -> Int -> [Int] -> String
|
oPair
:: (Data a, Data b) => (a -> String -> Int -> [Int] -> a) -> (b -> String -> Int -> [Int] -> b) -> (a,b) -> String -> Int -> [Int] -> (a,b)
|
oTriple
:: (Data a, Data b, Data c) => (a -> String -> Int -> [Int] -> a) -> (b -> String -> Int -> [Int] -> b) -> (c -> String -> Int -> [Int] -> c) -> (a,b,c) -> String -> Int -> [Int] -> (a,b,c)
|
o4Tuple
:: (Data a, Data b, Data c, Data d) => (a -> String -> Int -> [Int] -> a) -> (b -> String -> Int -> [Int] -> b) -> (c -> String -> Int -> [Int] -> c) -> (d -> String -> Int -> [Int] -> d) -> (a,b,c,d) -> String -> Int -> [Int] -> (a,b,c,d)
|
o5Tuple
:: (Data a, Data b, Data c, Data d, Data e) => (a -> String -> Int -> [Int] -> a) -> (b -> String -> Int -> [Int] -> b) -> (c -> String -> Int -> [Int] -> c) -> (d -> String -> Int -> [Int] -> d) -> (e -> String -> Int -> [Int] -> e) -> (a,b,c,d,e) -> String -> Int -> [Int] -> (a,b,c,d,e)
|
oMaybe
:: Data a => (a -> String -> Int -> [Int] -> a) -> Maybe a -> String -> Int -> [Int] -> Maybe a
|
oEither
:: (Data a, Data b) => (a -> String -> Int -> [Int] -> a) -> (b -> String -> Int -> [Int] -> b) -> Either a b -> String -> Int -> [Int] -> Either a b
|
oFun
:: (Data a, Data b) => (a -> String -> Int -> [Int] -> a) -> (b -> String -> Int -> [Int] -> b) -> (a -> b) -> String -> Int -> [Int] -> a -> b
|
(~>)
:: (Data a, Data b) => (a -> String -> Int -> [Int] -> a) -> (b -> String -> Int -> [Int] -> b) -> (a -> b) -> String -> Int -> [Int] -> a -> b
|
oFunFG
:: Data a => (a -> String -> Int -> [Int] -> a) -> (b -> String -> Int -> [Int] -> b) -> (a -> b) -> String -> Int -> [Int] -> a -> b
|
(~~>)
:: Data a => (a -> String -> Int -> [Int] -> a) -> (b -> String -> Int -> [Int] -> b) -> (a -> b) -> String -> Int -> [Int] -> a -> b
|
oFunG
:: (a -> String -> Int -> [Int] -> a) -> (b -> String -> Int -> [Int] -> b) -> (a -> b) -> String -> Int -> [Int] -> a -> b
|
(~~~>)
:: (a -> String -> Int -> [Int] -> a) -> (b -> String -> Int -> [Int] -> b) -> (a -> b) -> String -> Int -> [Int] -> a -> b
|
o0
:: String -> a -> String -> Int -> [Int] -> a
|
o1
:: Data a => (a -> String -> Int -> [Int] -> a) -> String -> (a -> b) -> a -> String -> Int -> [Int] -> b
|
o2
:: (Data a, Data b) => (a -> String -> Int -> [Int] -> a) -> (b -> String -> Int -> [Int] -> b) -> String -> (a -> b -> c) -> a -> b -> String -> Int -> [Int] -> c
|
o3
:: (Data a, Data b, Data c) => (a -> String -> Int -> [Int] -> a) -> (b -> String -> Int -> [Int] -> b) -> (c -> String -> Int -> [Int] -> c) -> String -> (a -> b -> c -> d) -> a -> b -> c -> String -> Int -> [Int] -> d
|
o4
:: (Data a, Data b, Data c, Data d) => (a -> String -> Int -> [Int] -> a) -> (b -> String -> Int -> [Int] -> b) -> (c -> String -> Int -> [Int] -> c) -> (d -> String -> Int -> [Int] -> d) -> String -> (a -> b -> c -> d -> e) -> a -> b -> c -> d -> String -> Int -> [Int] -> e
|
o5
:: (Data a, Data b, Data c, Data d, Data e) => (a -> String -> Int -> [Int] -> a) -> (b -> String -> Int -> [Int] -> b) -> (c -> String -> Int -> [Int] -> c) -> (d -> String -> Int -> [Int] -> d) -> (e -> String -> Int -> [Int] -> e) -> String -> (a -> b -> c -> d -> e -> f) -> a -> b -> c -> d -> e -> String -> Int -> [Int] -> f
|
clearLogFile
:: IO ()
|
Type synonym: Observer a = a -> Label -> EventID -> [EventID] -> a
The basic operation to observe the evaluation of data structures.
It has a |
The basic operation to observe the evaluation of ground data structures.
It does not require a |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|