Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
curry
curry-tools
Commits
9c312d0f
Commit
9c312d0f
authored
Jun 29, 2015
by
Michael Hanus
Browse files
currypp/Default code refactoring
parent
71bae711
Changes
1
Hide whitespace changes
Inline
Side-by-side
currypp/DefaultRules/Transform.curry
View file @
9c312d0f
...
...
@@ -131,7 +131,7 @@ translateProg :: CurryProg -> CurryProg
translateProg (CurryProg mn imps tdecls fdecls ops) =
CurryProg mn newimps tdecls newfdecls ops
where
newimps = if
"S
etFun
ctions"
`elem` imps then imps else
"S
etFun
ctions"
:imps
newimps = if
s
etFun
Mod
`elem` imps then imps else
s
etFun
Mod
:imps
(deffuncs,funcs) = partition isDefault fdecls
defrules = map (func2rule funcs) deffuncs
newfdecls = concatMap (transFDecl defrules) funcs
...
...
@@ -160,17 +160,17 @@ transFDecl defrules (CmtFunc _ qf ar vis texp rules) =
transFDecl defrules fdecl@(CFunc qf@(mn,fn) ar vis texp rules) =
maybe [CFunc qf ar vis texp rules]
(\defrule ->
[
transFDecl2ApplyCond applyname fdecl
,
CFunc neworgname ar Private texp rules
,
[
CFunc neworgname ar Private texp rules
,
transFDecl2ApplyCond applyname fdecl
,
CFunc deffunname ar Private texp
[transDefaultRule applyname ar defrule],
CFunc qf ar vis texp [neworgrule]])
(lookup qf defrules)
where
-- new names for auxiliary functions (TODO: check for unused name)
apply
name
= (mn,fn++"_ORG
FUN
")
neworg
name = (mn,fn++"_
DEFAULT
")
deffunname = (mn,fn++"_
APPLYCOND
")
neworg
name = (mn,fn++"_ORG
RULES
")
apply
name
= (mn,fn++"_
APPLICABLE
")
deffunname = (mn,fn++"_
DEFAULT
")
neworgrule =
CRule (map CPVar argvars)
...
...
@@ -208,9 +208,9 @@ transDefaultRule _ _ (CRule _ (CGuardedRhs _ _)) =
transDefaultRule condfunname ar (CRule pats (CSimpleRhs exp locals)) =
CRule newpats (CGuardedRhs [(checkCond,exp)] locals)
where
checkCond =applyF (
"S
etFun
ctions"
,"isEmpty")
[applyF (
"S
etFun
ctions"
,"set"++show ar)
(CSymbol condfunname : args)]
checkCond =
applyF (
s
etFun
Mod
,"isEmpty")
[applyF (
s
etFun
Mod
,"set"++show ar)
(CSymbol condfunname : args)]
(newpats,args) = unzip (map arg2patexp (zip [1001..] pats))
...
...
@@ -228,3 +228,6 @@ preUnit = CSymbol (pre "()")
preUntyped :: CTypeExpr
preUntyped = CTCons (pre "untyped") []
setFunMod :: String
setFunMod = "SetFunctions"
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment