Cross Reference: /hets/Haskell/Logic_Haskell.hs
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
03831d35f7499c87d51205817c93e9a8d42c4baestevel{- |
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
2983dda76a6d296fdb560c88114fe41caad1b84fMichael Bergknoff
03831d35f7499c87d51205817c93e9a8d42c4baestevelMaintainer : Christian.Maeder@dfki.de
03831d35f7499c87d51205817c93e9a8d42c4baestevelStability : provisional
03831d35f7499c87d51205817c93e9a8d42c4baestevelPortability : non-portable(Logic)
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevelHere is the place where the classes 'Category', 'Syntax',
03831d35f7499c87d51205817c93e9a8d42c4baestevel 'StaticAnalysis', 'Sentences', and 'Logic' are instantiated for
03831d35f7499c87d51205817c93e9a8d42c4baestevel Haskell.
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel Some method implementations for 'StaticAnalysis' and 'Sentences'
03831d35f7499c87d51205817c93e9a8d42c4baestevel are still missing.
03831d35f7499c87d51205817c93e9a8d42c4baestevel-}
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevelmodule Haskell.Logic_Haskell
03831d35f7499c87d51205817c93e9a8d42c4baestevel ( Haskell(..)
03831d35f7499c87d51205817c93e9a8d42c4baestevel , HaskellMorphism
2983dda76a6d296fdb560c88114fe41caad1b84fMichael Bergknoff , SYMB_ITEMS
03831d35f7499c87d51205817c93e9a8d42c4baestevel , SYMB_MAP_ITEMS
03831d35f7499c87d51205817c93e9a8d42c4baestevel , Haskell_Sublogics
03831d35f7499c87d51205817c93e9a8d42c4baestevel , Symbol
03831d35f7499c87d51205817c93e9a8d42c4baestevel , RawSymbol
03831d35f7499c87d51205817c93e9a8d42c4baestevel ) where
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevelimport Common.AS_Annotation
03831d35f7499c87d51205817c93e9a8d42c4baestevelimport Common.DefaultMorphism
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevelimport Haskell.TiPropATC()
03831d35f7499c87d51205817c93e9a8d42c4baestevelimport Haskell.HatParser
03831d35f7499c87d51205817c93e9a8d42c4baestevelimport Haskell.HatAna
03831d35f7499c87d51205817c93e9a8d42c4baestevelimport Common.Doc
03831d35f7499c87d51205817c93e9a8d42c4baestevelimport Common.DocUtils
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevelimport Logic.Logic
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel-- a dummy datatype for the LogicGraph and for identifying the right
03831d35f7499c87d51205817c93e9a8d42c4baestevel-- instances
03831d35f7499c87d51205817c93e9a8d42c4baestevel
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/"
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baesteveltype HaskellMorphism = DefaultMorphism Sign
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel-- abstract syntax, parsing (and printing)
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baesteveltype SYMB_ITEMS = ()
03831d35f7499c87d51205817c93e9a8d42c4baesteveltype SYMB_MAP_ITEMS = ()
03831d35f7499c87d51205817c93e9a8d42c4baestevel
2983dda76a6d296fdb560c88114fe41caad1b84fMichael Bergknoffinstance Syntax Haskell HsDecls
03831d35f7499c87d51205817c93e9a8d42c4baestevel SYMB_ITEMS SYMB_MAP_ITEMS
03831d35f7499c87d51205817c93e9a8d42c4baestevel where
03831d35f7499c87d51205817c93e9a8d42c4baestevel parse_basic_spec Haskell = Just hatParser
03831d35f7499c87d51205817c93e9a8d42c4baestevel parse_symb_items Haskell = Nothing
03831d35f7499c87d51205817c93e9a8d42c4baestevel parse_symb_map_items Haskell = Nothing
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baesteveltype Haskell_Sublogics = ()
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baesteveltype Symbol = ()
03831d35f7499c87d51205817c93e9a8d42c4baesteveltype RawSymbol = ()
03831d35f7499c87d51205817c93e9a8d42c4baestevel
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 "-}"
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevelinstance StaticAnalysis Haskell HsDecls
03831d35f7499c87d51205817c93e9a8d42c4baestevel (TiDecl PNT)
03831d35f7499c87d51205817c93e9a8d42c4baestevel SYMB_ITEMS SYMB_MAP_ITEMS
03831d35f7499c87d51205817c93e9a8d42c4baestevel Sign
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
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevelinstance Logic Haskell Haskell_Sublogics
03831d35f7499c87d51205817c93e9a8d42c4baestevel HsDecls (TiDecl PNT) SYMB_ITEMS SYMB_MAP_ITEMS
03831d35f7499c87d51205817c93e9a8d42c4baestevel Sign
03831d35f7499c87d51205817c93e9a8d42c4baestevel HaskellMorphism
03831d35f7499c87d51205817c93e9a8d42c4baestevel Symbol RawSymbol ()
03831d35f7499c87d51205817c93e9a8d42c4baestevel