69227
|
1 |
{- generated by Isabelle -}
|
69226
|
2 |
|
69225
|
3 |
{- Title: Tools/Haskell/Properties.hs
|
|
4 |
Author: Makarius
|
|
5 |
LICENSE: BSD 3-clause (Isabelle)
|
|
6 |
|
|
7 |
Property lists.
|
69280
|
8 |
|
|
9 |
See also "$ISABELLE_HOME/src/Pure/General/properties.ML".
|
69225
|
10 |
-}
|
|
11 |
|
|
12 |
module Isabelle.Properties (Entry, T, defined, get, put, remove)
|
|
13 |
where
|
|
14 |
|
|
15 |
import qualified Data.List as List
|
|
16 |
|
|
17 |
|
|
18 |
type Entry = (String, String)
|
|
19 |
type T = [Entry]
|
|
20 |
|
|
21 |
defined :: T -> String -> Bool
|
|
22 |
defined props name = any (\(a, _) -> a == name) props
|
|
23 |
|
|
24 |
get :: T -> String -> Maybe String
|
|
25 |
get props name = List.lookup name props
|
|
26 |
|
|
27 |
put :: Entry -> T -> T
|
|
28 |
put entry props = entry : remove (fst entry) props
|
|
29 |
|
|
30 |
remove :: String -> T -> T
|
|
31 |
remove name props =
|
|
32 |
if defined props name then filter (\(a, _) -> a /= name) props
|
|
33 |
else props
|