Logic_Haskell.hs revision 84933d742dc5bcf760653b5d1784e00cee342032
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
03831d35f7499c87d51205817c93e9a8d42c4baestevelModule : $Header$
03831d35f7499c87d51205817c93e9a8d42c4baestevelDescription : Instance of class Logic for the Haskell logic
03831d35f7499c87d51205817c93e9a8d42c4baestevelCopyright : (c) Christian Maeder, Sonja Groening, Uni Bremen 2002-2004
2983dda76a6d296fdb560c88114fe41caad1b84fMichael BergknoffLicense : similar to LGPL, see HetCATS/LICENSE.txt or LIZENZ.txt
03831d35f7499c87d51205817c93e9a8d42c4baestevelMaintainer : Christian.Maeder@dfki.de
03831d35f7499c87d51205817c93e9a8d42c4baestevelStability : provisional
03831d35f7499c87d51205817c93e9a8d42c4baestevelPortability : non-portable(Logic)
03831d35f7499c87d51205817c93e9a8d42c4baestevelHere is the place where the classes 'Category', 'Syntax',
03831d35f7499c87d51205817c93e9a8d42c4baestevel 'StaticAnalysis', 'Sentences', and 'Logic' are instantiated for
03831d35f7499c87d51205817c93e9a8d42c4baestevel Some method implementations for 'StaticAnalysis' and 'Sentences'
03831d35f7499c87d51205817c93e9a8d42c4baestevel are still missing.
03831d35f7499c87d51205817c93e9a8d42c4baestevel ( Haskell(..)
03831d35f7499c87d51205817c93e9a8d42c4baestevel , HaskellMorphism
03831d35f7499c87d51205817c93e9a8d42c4baestevel , SYMB_MAP_ITEMS
03831d35f7499c87d51205817c93e9a8d42c4baestevel , Haskell_Sublogics
03831d35f7499c87d51205817c93e9a8d42c4baestevel , RawSymbol
03831d35f7499c87d51205817c93e9a8d42c4baestevel-- a dummy datatype for the LogicGraph and for identifying the right
03831d35f7499c87d51205817c93e9a8d42c4baestevel-- instances
03831d35f7499c87d51205817c93e9a8d42c4baesteveldata Haskell = Haskell deriving (Show)
03831d35f7499c87d51205817c93e9a8d42c4baestevelinstance Language Haskell where
03831d35f7499c87d51205817c93e9a8d42c4baestevel description _ =
03831d35f7499c87d51205817c93e9a8d42c4baestevel "Haskell - a purely functional programming language,\
03831d35f7499c87d51205817c93e9a8d42c4baestevel \ featuring static typing, higher-order functions, polymorphism,\
03831d35f7499c87d51205817c93e9a8d42c4baestevel \ type classes and monadic effects.\
03831d35f7499c87d51205817c93e9a8d42c4baestevel \ See http://www.haskell.org. This version is based on Programatica,\
03831d35f7499c87d51205817c93e9a8d42c4baestevel \ see http://www.cse.ogi.edu/PacSoft/projects/programatica/"
03831d35f7499c87d51205817c93e9a8d42c4baesteveltype HaskellMorphism = DefaultMorphism Sign
03831d35f7499c87d51205817c93e9a8d42c4baestevel-- abstract syntax, parsing (and printing)
03831d35f7499c87d51205817c93e9a8d42c4baesteveltype SYMB_ITEMS = ()
03831d35f7499c87d51205817c93e9a8d42c4baesteveltype SYMB_MAP_ITEMS = ()
2983dda76a6d296fdb560c88114fe41caad1b84fMichael Bergknoffinstance Syntax Haskell HsDecls
03831d35f7499c87d51205817c93e9a8d42c4baestevel SYMB_ITEMS SYMB_MAP_ITEMS
03831d35f7499c87d51205817c93e9a8d42c4baestevel parse_basic_spec Haskell = Just hatParser
03831d35f7499c87d51205817c93e9a8d42c4baestevel parse_symb_items Haskell = Nothing
03831d35f7499c87d51205817c93e9a8d42c4baestevel parse_symb_map_items Haskell = Nothing
03831d35f7499c87d51205817c93e9a8d42c4baesteveltype Haskell_Sublogics = ()
03831d35f7499c87d51205817c93e9a8d42c4baesteveltype Symbol = ()
03831d35f7499c87d51205817c93e9a8d42c4baesteveltype RawSymbol = ()
03831d35f7499c87d51205817c93e9a8d42c4baestevelinstance Sentences Haskell (TiDecl PNT) Sign HaskellMorphism Symbol where
03831d35f7499c87d51205817c93e9a8d42c4baestevel map_sen Haskell _m s = return s
03831d35f7499c87d51205817c93e9a8d42c4baestevel print_named Haskell sen =
03831d35f7499c87d51205817c93e9a8d42c4baestevel pretty (sentence sen) <>
03831d35f7499c87d51205817c93e9a8d42c4baestevel case senAttr sen of
03831d35f7499c87d51205817c93e9a8d42c4baestevel [] -> empty
03831d35f7499c87d51205817c93e9a8d42c4baestevel lab -> space <> text "{-" <+> text lab <+> text "-}"
03831d35f7499c87d51205817c93e9a8d42c4baestevelinstance StaticAnalysis Haskell HsDecls
03831d35f7499c87d51205817c93e9a8d42c4baestevel (TiDecl PNT)
03831d35f7499c87d51205817c93e9a8d42c4baestevel SYMB_ITEMS SYMB_MAP_ITEMS
03831d35f7499c87d51205817c93e9a8d42c4baestevel HaskellMorphism
03831d35f7499c87d51205817c93e9a8d42c4baestevel Symbol RawSymbol where
03831d35f7499c87d51205817c93e9a8d42c4baestevel basic_analysis Haskell = Just hatAna
03831d35f7499c87d51205817c93e9a8d42c4baestevel empty_signature Haskell = emptySign
03831d35f7499c87d51205817c93e9a8d42c4baestevel signature_union Haskell s = return . addSign s
03831d35f7499c87d51205817c93e9a8d42c4baestevel final_union Haskell = signature_union Haskell
03831d35f7499c87d51205817c93e9a8d42c4baestevel inclusion Haskell = defaultInclusion isSubSign
03831d35f7499c87d51205817c93e9a8d42c4baestevelinstance Logic Haskell Haskell_Sublogics
03831d35f7499c87d51205817c93e9a8d42c4baestevel HsDecls (TiDecl PNT) SYMB_ITEMS SYMB_MAP_ITEMS
03831d35f7499c87d51205817c93e9a8d42c4baestevel HaskellMorphism
03831d35f7499c87d51205817c93e9a8d42c4baestevel Symbol RawSymbol ()