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
|
module FlatCurry.Typed.Names where
import FlatCurry.Typed.Types
isPrimOp :: QName -> Bool
isPrimOp (mn,fn) = mn=="Prelude" && fn `elem` map fst preludePrimOps
preludePrimOps :: [(String,String)]
preludePrimOps = unaryPrimOps ++ binaryPrimOps ++
[("otherwise","true")
,("apply","apply")
]
unaryPrimOps :: [(String,String)]
unaryPrimOps =
[("_impl#negate#Prelude.Num#Prelude.Int","-")
,("not","not")
]
binaryPrimOps :: [(String,String)]
binaryPrimOps =
[("&&","and")
,("||","or")
,("==","=")
,("_impl#==#Prelude.Eq#Prelude.Int","=")
,("_impl#==#Prelude.Eq#Prelude.Char","=")
,("/=","/=")
,("_impl#/=#Prelude.Eq#Prelude.Int","/=")
,("_impl#/=#Prelude.Eq#Prelude.Char","/=")
,("_impl#+#Prelude.Num#Prelude.Int","+")
,("_impl#-#Prelude.Num#Prelude.Int","-")
,("_impl#*#Prelude.Num#Prelude.Int","*")
,("_impl#negate#Prelude.Num#Prelude.Int","-")
,("_impl#div#Prelude.Integral#Prelude.Int","div")
,("_impl#mod#Prelude.Integral#Prelude.Int","mod")
,("_impl#rem#Prelude.Integral#Prelude.Int","rem")
,("_impl#>#Prelude.Ord#Prelude.Int",">")
,("_impl#<#Prelude.Ord#Prelude.Int","<")
,("_impl#>=#Prelude.Ord#Prelude.Int",">=")
,("_impl#<=#Prelude.Ord#Prelude.Int","<=")
,("_impl#>#Prelude.Ord#Prelude.Float",">")
,("_impl#<#Prelude.Ord#Prelude.Float","<")
,("_impl#>=#Prelude.Ord#Prelude.Float",">=")
,("_impl#<=#Prelude.Ord#Prelude.Float","<=")
,("_impl#>#Prelude.Ord#Prelude.Char",">")
,("_impl#<#Prelude.Ord#Prelude.Char","<")
,("_impl#>=#Prelude.Ord#Prelude.Char",">=")
,("_impl#<=#Prelude.Ord#Prelude.Char","<=")
]
transPrimTCons :: [(String,String)]
transPrimTCons =
[("Int","Int")
,("Float","Real")
,("Char","Int")
,("[]","List")
,("()","Unit")
,("(,)","Pair")
]
transPrimCons :: [(String,String)]
transPrimCons =
[("True","true")
,("False","false")
,("[]","nil")
,(":","insert")
,("()","unit")
,("(,)","mk-pair")
,("LT","LT")
,("EQ","EQ")
,("GT","GT")
,("Nothing","Nothing")
,("Just","Just")
,("Left","Left")
,("Right","Right")
] ++
map (\i -> ('(' : take (i-1) (repeat ',') ++ ")", "Tuple" ++ show i)) [3..15]
|