diff --git a/src/Core/Examples.hs b/src/Core/Examples.hs index cb1823e..efe953d 100644 --- a/src/Core/Examples.hs +++ b/src/Core/Examples.hs @@ -15,15 +15,6 @@ import Core.Syntax import Core.TH ---------------------------------------------------------------------------------- --- -fac3 = undefined -sumList = undefined -constDivZero = undefined -idCase = undefined ---} - -{-- - letrecExample :: Program' letrecExample = [coreProg| pair x y f = f x y; @@ -225,5 +216,3 @@ idCase = [coreProg| -- , ScDef "Cons" [] $ Con 2 2 -- ] ---} - diff --git a/src/Core/Parse.y b/src/Core/Parse.y index 129fb77..111fe59 100644 --- a/src/Core/Parse.y +++ b/src/Core/Parse.y @@ -77,6 +77,8 @@ StandaloneProgram : Program eof { $1 } Program :: { Program Name } Program : ScTypeSig ';' Program { insTypeSig $1 $3 } | ScTypeSig OptSemi { singletonTypeSig $1 } + | ScDef ';' Program { insScDef $1 $3 } + | ScDef OptSemi { singletonScDef $1 } OptSemi :: { () } OptSemi : ';' { () } @@ -216,8 +218,13 @@ insTypeSig :: (Hashable b) => (b, Type) -> Program b -> Program b insTypeSig ts = programTypeSigs %~ uncurry H.insert ts singletonTypeSig :: (Hashable b) => (b, Type) -> Program b -singletonTypeSig ts = mempty - & programTypeSigs .~ uncurry H.singleton ts +singletonTypeSig ts = insTypeSig ts mempty + +insScDef :: (Hashable b) => ScDef b -> Program b -> Program b +insScDef sc = programScDefs %~ (sc:) + +singletonScDef :: (Hashable b) => ScDef b -> Program b +singletonScDef sc = insScDef sc mempty }