From 324fa106c59bad7f58042a8c0e1bfd5b157810d0 Mon Sep 17 00:00:00 2001 From: Lukasz Czajka Date: Wed, 3 Aug 2022 18:56:50 +0200 Subject: [PATCH] refactor for PR #1420 --- src/Juvix/{ => Compiler}/Core/Data/BinderList.hs | 4 ++-- src/Juvix/{ => Compiler}/Core/Data/InfoTable.hs | 6 +++--- src/Juvix/{ => Compiler}/Core/Evaluator.hs | 10 +++++----- src/Juvix/{ => Compiler}/Core/Extra.hs | 16 ++++++++-------- src/Juvix/{ => Compiler}/Core/Extra/Base.hs | 10 +++++----- src/Juvix/{ => Compiler}/Core/Extra/Recursors.hs | 14 +++++++------- src/Juvix/{ => Compiler}/Core/Language.hs | 8 ++++---- src/Juvix/{ => Compiler}/Core/Language/Base.hs | 14 ++++++-------- .../{ => Compiler}/Core/Language/Builtins.hs | 2 +- src/Juvix/{ => Compiler}/Core/Language/Info.hs | 4 ++-- .../Core/Language/Info/ArgsNumInfo.hs | 4 ++-- .../Core/Language/Info/BinderInfo.hs | 6 +++--- .../Core/Language/Info/FreeVarsInfo.hs | 8 ++++---- .../Core/Language/Info/IdentInfo.hs | 8 ++++---- .../Core/Language/Info/LocationInfo.hs | 4 ++-- .../Core/Language/Info/NameInfo.hs | 4 ++-- .../Core/Language/Info/TypeInfo.hs | 6 +++--- src/Juvix/{ => Compiler}/Core/Language/Type.hs | 4 ++-- 18 files changed, 65 insertions(+), 67 deletions(-) rename src/Juvix/{ => Compiler}/Core/Data/BinderList.hs (92%) rename src/Juvix/{ => Compiler}/Core/Data/InfoTable.hs (91%) rename src/Juvix/{ => Compiler}/Core/Evaluator.hs (95%) rename src/Juvix/{ => Compiler}/Core/Extra.hs (90%) rename src/Juvix/{ => Compiler}/Core/Extra/Base.hs (96%) rename src/Juvix/{ => Compiler}/Core/Extra/Recursors.hs (94%) rename src/Juvix/{ => Compiler}/Core/Language.hs (96%) rename src/Juvix/{ => Compiler}/Core/Language/Base.hs (69%) rename src/Juvix/{ => Compiler}/Core/Language/Builtins.hs (94%) rename src/Juvix/{ => Compiler}/Core/Language/Info.hs (94%) rename src/Juvix/{ => Compiler}/Core/Language/Info/ArgsNumInfo.hs (63%) rename src/Juvix/{ => Compiler}/Core/Language/Info/BinderInfo.hs (73%) rename src/Juvix/{ => Compiler}/Core/Language/Info/FreeVarsInfo.hs (87%) rename src/Juvix/{ => Compiler}/Core/Language/Info/IdentInfo.hs (84%) rename src/Juvix/{ => Compiler}/Core/Language/Info/LocationInfo.hs (64%) rename src/Juvix/{ => Compiler}/Core/Language/Info/NameInfo.hs (59%) rename src/Juvix/{ => Compiler}/Core/Language/Info/TypeInfo.hs (51%) rename src/Juvix/{ => Compiler}/Core/Language/Type.hs (61%) diff --git a/src/Juvix/Core/Data/BinderList.hs b/src/Juvix/Compiler/Core/Data/BinderList.hs similarity index 92% rename from src/Juvix/Core/Data/BinderList.hs rename to src/Juvix/Compiler/Core/Data/BinderList.hs index c6e8fce06d..703172eba2 100644 --- a/src/Juvix/Core/Data/BinderList.hs +++ b/src/Juvix/Compiler/Core/Data/BinderList.hs @@ -1,8 +1,8 @@ -module Juvix.Core.Data.BinderList where +module Juvix.Compiler.Core.Data.BinderList where import Data.HashMap.Strict qualified as HashMap import Data.List qualified as List -import Juvix.Core.Language.Base +import Juvix.Compiler.Core.Language.Base data BinderList a = BinderList { _blLength :: Int, diff --git a/src/Juvix/Core/Data/InfoTable.hs b/src/Juvix/Compiler/Core/Data/InfoTable.hs similarity index 91% rename from src/Juvix/Core/Data/InfoTable.hs rename to src/Juvix/Compiler/Core/Data/InfoTable.hs index aaceb67e8a..983a061042 100644 --- a/src/Juvix/Core/Data/InfoTable.hs +++ b/src/Juvix/Compiler/Core/Data/InfoTable.hs @@ -1,7 +1,7 @@ -module Juvix.Core.Data.InfoTable where +module Juvix.Compiler.Core.Data.InfoTable where -import Juvix.Core.Language -import Juvix.Core.Language.Type +import Juvix.Compiler.Core.Language +import Juvix.Compiler.Core.Language.Type type IdentContext = HashMap Symbol Node diff --git a/src/Juvix/Core/Evaluator.hs b/src/Juvix/Compiler/Core/Evaluator.hs similarity index 95% rename from src/Juvix/Core/Evaluator.hs rename to src/Juvix/Compiler/Core/Evaluator.hs index 3e298ec391..a185ef4d69 100644 --- a/src/Juvix/Core/Evaluator.hs +++ b/src/Juvix/Compiler/Core/Evaluator.hs @@ -4,15 +4,15 @@ {-# HLINT ignore "Avoid restricted extensions" #-} {-# HLINT ignore "Avoid restricted flags" #-} -module Juvix.Core.Evaluator where +module Juvix.Compiler.Core.Evaluator where import Control.Exception qualified as Exception import Data.HashMap.Strict ((!)) import GHC.Show -import Juvix.Core.Data.InfoTable -import Juvix.Core.Extra -import Juvix.Core.Language -import Juvix.Core.Language.Info qualified as Info +import Juvix.Compiler.Core.Data.InfoTable +import Juvix.Compiler.Core.Extra +import Juvix.Compiler.Core.Language +import Juvix.Compiler.Core.Language.Info qualified as Info newtype EvalError = EvalError String diff --git a/src/Juvix/Core/Extra.hs b/src/Juvix/Compiler/Core/Extra.hs similarity index 90% rename from src/Juvix/Core/Extra.hs rename to src/Juvix/Compiler/Core/Extra.hs index dc057ac6b5..52ca3380e3 100644 --- a/src/Juvix/Core/Extra.hs +++ b/src/Juvix/Compiler/Core/Extra.hs @@ -1,15 +1,15 @@ -module Juvix.Core.Extra - ( module Juvix.Core.Extra, - module Juvix.Core.Extra.Base, - module Juvix.Core.Extra.Recursors, +module Juvix.Compiler.Core.Extra + ( module Juvix.Compiler.Core.Extra, + module Juvix.Compiler.Core.Extra.Base, + module Juvix.Compiler.Core.Extra.Recursors, ) where import Data.HashSet qualified as HashSet -import Juvix.Core.Extra.Base -import Juvix.Core.Extra.Recursors -import Juvix.Core.Language -import Juvix.Core.Language.Info qualified as Info +import Juvix.Compiler.Core.Extra.Base +import Juvix.Compiler.Core.Extra.Recursors +import Juvix.Compiler.Core.Language +import Juvix.Compiler.Core.Language.Info qualified as Info -- `isClosed` may short-circuit evaluation due to the use of `&&`, so it's not -- entirely reducible to `getFreeVars` in terms of computation time. diff --git a/src/Juvix/Core/Extra/Base.hs b/src/Juvix/Compiler/Core/Extra/Base.hs similarity index 96% rename from src/Juvix/Core/Extra/Base.hs rename to src/Juvix/Compiler/Core/Extra/Base.hs index d3bf0c990f..bcce518c77 100644 --- a/src/Juvix/Core/Extra/Base.hs +++ b/src/Juvix/Compiler/Core/Extra/Base.hs @@ -1,11 +1,11 @@ -module Juvix.Core.Extra.Base where +module Juvix.Compiler.Core.Extra.Base where import Data.Functor.Identity import Data.List qualified as List -import Juvix.Core.Language -import Juvix.Core.Language.Info qualified as Info -import Juvix.Core.Language.Info.BinderInfo -import Juvix.Core.Language.Type +import Juvix.Compiler.Core.Language +import Juvix.Compiler.Core.Language.Info qualified as Info +import Juvix.Compiler.Core.Language.Info.BinderInfo +import Juvix.Compiler.Core.Language.Type {------------------------------------------------------------------------} {- functions on Type -} diff --git a/src/Juvix/Core/Extra/Recursors.hs b/src/Juvix/Compiler/Core/Extra/Recursors.hs similarity index 94% rename from src/Juvix/Core/Extra/Recursors.hs rename to src/Juvix/Compiler/Core/Extra/Recursors.hs index eac16957d7..2545148248 100644 --- a/src/Juvix/Core/Extra/Recursors.hs +++ b/src/Juvix/Compiler/Core/Extra/Recursors.hs @@ -1,15 +1,15 @@ -module Juvix.Core.Extra.Recursors - ( module Juvix.Core.Extra.Recursors, +module Juvix.Compiler.Core.Extra.Recursors + ( module Juvix.Compiler.Core.Extra.Recursors, BinderList, ) where import Data.Functor.Identity -import Juvix.Core.Data.BinderList (BinderList) -import Juvix.Core.Data.BinderList qualified as BL -import Juvix.Core.Extra.Base -import Juvix.Core.Language -import Juvix.Core.Language.Info.BinderInfo +import Juvix.Compiler.Core.Data.BinderList (BinderList) +import Juvix.Compiler.Core.Data.BinderList qualified as BL +import Juvix.Compiler.Core.Extra.Base +import Juvix.Compiler.Core.Language +import Juvix.Compiler.Core.Language.Info.BinderInfo {---------------------------------------------------------------------------------} {- General recursors on Node -} diff --git a/src/Juvix/Core/Language.hs b/src/Juvix/Compiler/Core/Language.hs similarity index 96% rename from src/Juvix/Core/Language.hs rename to src/Juvix/Compiler/Core/Language.hs index 4efd0eb8e4..4529fba720 100644 --- a/src/Juvix/Core/Language.hs +++ b/src/Juvix/Compiler/Core/Language.hs @@ -3,9 +3,9 @@ {-# HLINT ignore "Avoid restricted flags" #-} -module Juvix.Core.Language - ( module Juvix.Core.Language, - module Juvix.Core.Language.Base, +module Juvix.Compiler.Core.Language + ( module Juvix.Compiler.Core.Language, + module Juvix.Compiler.Core.Language.Base, ) where @@ -13,7 +13,7 @@ where This file defines the tree representation of JuvixCore (Node datatype). -} -import Juvix.Core.Language.Base +import Juvix.Compiler.Core.Language.Base {---------------------------------------------------------------------------------} {- Program tree datatype -} diff --git a/src/Juvix/Core/Language/Base.hs b/src/Juvix/Compiler/Core/Language/Base.hs similarity index 69% rename from src/Juvix/Core/Language/Base.hs rename to src/Juvix/Compiler/Core/Language/Base.hs index b18398526d..91befc6461 100644 --- a/src/Juvix/Core/Language/Base.hs +++ b/src/Juvix/Compiler/Core/Language/Base.hs @@ -1,11 +1,10 @@ -module Juvix.Core.Language.Base +module Juvix.Compiler.Core.Language.Base ( Info, Key, IsInfo, - module Juvix.Core.Language.Builtins, + module Juvix.Compiler.Core.Language.Builtins, module Juvix.Prelude, - module Juvix.Prelude.Loc, - module Juvix.Syntax.Abstract.Name, + module Juvix.Compiler.Abstract.Data.Name, Location, Symbol, Tag, @@ -13,11 +12,10 @@ module Juvix.Core.Language.Base ) where -import Juvix.Core.Language.Builtins -import Juvix.Core.Language.Info (Info, IsInfo, Key) +import Juvix.Compiler.Abstract.Data.Name +import Juvix.Compiler.Core.Language.Builtins +import Juvix.Compiler.Core.Language.Info (Info, IsInfo, Key) import Juvix.Prelude -import Juvix.Prelude.Loc -import Juvix.Syntax.Abstract.Name type Location = Interval diff --git a/src/Juvix/Core/Language/Builtins.hs b/src/Juvix/Compiler/Core/Language/Builtins.hs similarity index 94% rename from src/Juvix/Core/Language/Builtins.hs rename to src/Juvix/Compiler/Core/Language/Builtins.hs index 1ae6631765..2900c16ddb 100644 --- a/src/Juvix/Core/Language/Builtins.hs +++ b/src/Juvix/Compiler/Core/Language/Builtins.hs @@ -1,4 +1,4 @@ -module Juvix.Core.Language.Builtins where +module Juvix.Compiler.Core.Language.Builtins where import Juvix.Prelude diff --git a/src/Juvix/Core/Language/Info.hs b/src/Juvix/Compiler/Core/Language/Info.hs similarity index 94% rename from src/Juvix/Core/Language/Info.hs rename to src/Juvix/Compiler/Core/Language/Info.hs index e811757824..b0cc32d46f 100644 --- a/src/Juvix/Core/Language/Info.hs +++ b/src/Juvix/Compiler/Core/Language/Info.hs @@ -1,4 +1,4 @@ -module Juvix.Core.Language.Info where +module Juvix.Compiler.Core.Language.Info where {- This file defines Infos stored in JuvixCore Nodes. The Info data structure @@ -35,7 +35,7 @@ lookupDefault a i = fromDyn (HashMap.lookupDefault (toDyn a) (typeOf a) (i ^. infoMap)) impossible (!) :: IsInfo a => Key a -> Info -> a -(!) k i = fromJust (Juvix.Core.Language.Info.lookup k i) +(!) k i = fromJust (Juvix.Compiler.Core.Language.Info.lookup k i) insert :: IsInfo a => a -> Info -> Info insert a i = Info (HashMap.insert (typeOf a) (toDyn a) (i ^. infoMap)) diff --git a/src/Juvix/Core/Language/Info/ArgsNumInfo.hs b/src/Juvix/Compiler/Core/Language/Info/ArgsNumInfo.hs similarity index 63% rename from src/Juvix/Core/Language/Info/ArgsNumInfo.hs rename to src/Juvix/Compiler/Core/Language/Info/ArgsNumInfo.hs index 6a6fee5f89..81914832b2 100644 --- a/src/Juvix/Core/Language/Info/ArgsNumInfo.hs +++ b/src/Juvix/Compiler/Core/Language/Info/ArgsNumInfo.hs @@ -1,6 +1,6 @@ -module Juvix.Core.Language.Info.ArgsNumInfo where +module Juvix.Compiler.Core.Language.Info.ArgsNumInfo where -import Juvix.Core.Language.Base +import Juvix.Compiler.Core.Language.Base newtype ArgsNumInfo = ArgsNumInfo { _infoArgsNum :: Int diff --git a/src/Juvix/Core/Language/Info/BinderInfo.hs b/src/Juvix/Compiler/Core/Language/Info/BinderInfo.hs similarity index 73% rename from src/Juvix/Core/Language/Info/BinderInfo.hs rename to src/Juvix/Compiler/Core/Language/Info/BinderInfo.hs index 546b288850..2810d177b3 100644 --- a/src/Juvix/Core/Language/Info/BinderInfo.hs +++ b/src/Juvix/Compiler/Core/Language/Info/BinderInfo.hs @@ -1,7 +1,7 @@ -module Juvix.Core.Language.Info.BinderInfo where +module Juvix.Compiler.Core.Language.Info.BinderInfo where -import Juvix.Core.Language.Base -import Juvix.Core.Language.Type +import Juvix.Compiler.Core.Language.Base +import Juvix.Compiler.Core.Language.Type data BinderInfo = BinderInfo { _infoName :: Name, diff --git a/src/Juvix/Core/Language/Info/FreeVarsInfo.hs b/src/Juvix/Compiler/Core/Language/Info/FreeVarsInfo.hs similarity index 87% rename from src/Juvix/Core/Language/Info/FreeVarsInfo.hs rename to src/Juvix/Compiler/Core/Language/Info/FreeVarsInfo.hs index d4733affbc..653817e83e 100644 --- a/src/Juvix/Core/Language/Info/FreeVarsInfo.hs +++ b/src/Juvix/Compiler/Core/Language/Info/FreeVarsInfo.hs @@ -1,9 +1,9 @@ -module Juvix.Core.Language.Info.FreeVarsInfo where +module Juvix.Compiler.Core.Language.Info.FreeVarsInfo where import Data.HashMap.Strict qualified as HashMap -import Juvix.Core.Extra -import Juvix.Core.Language -import Juvix.Core.Language.Info qualified as Info +import Juvix.Compiler.Core.Extra +import Juvix.Compiler.Core.Language +import Juvix.Compiler.Core.Language.Info qualified as Info newtype FreeVarsInfo = FreeVarsInfo { -- map free variables to the number of their occurrences diff --git a/src/Juvix/Core/Language/Info/IdentInfo.hs b/src/Juvix/Compiler/Core/Language/Info/IdentInfo.hs similarity index 84% rename from src/Juvix/Core/Language/Info/IdentInfo.hs rename to src/Juvix/Compiler/Core/Language/Info/IdentInfo.hs index 7520aaa75e..6404b0bff2 100644 --- a/src/Juvix/Core/Language/Info/IdentInfo.hs +++ b/src/Juvix/Compiler/Core/Language/Info/IdentInfo.hs @@ -1,9 +1,9 @@ -module Juvix.Core.Language.Info.IdentInfo where +module Juvix.Compiler.Core.Language.Info.IdentInfo where import Data.HashMap.Strict qualified as HashMap -import Juvix.Core.Extra -import Juvix.Core.Language -import Juvix.Core.Language.Info qualified as Info +import Juvix.Compiler.Core.Extra +import Juvix.Compiler.Core.Language +import Juvix.Compiler.Core.Language.Info qualified as Info newtype IdentInfo = IdentInfo { -- map symbols to the number of their occurrences diff --git a/src/Juvix/Core/Language/Info/LocationInfo.hs b/src/Juvix/Compiler/Core/Language/Info/LocationInfo.hs similarity index 64% rename from src/Juvix/Core/Language/Info/LocationInfo.hs rename to src/Juvix/Compiler/Core/Language/Info/LocationInfo.hs index 1a48b4616a..bd5a9da75b 100644 --- a/src/Juvix/Core/Language/Info/LocationInfo.hs +++ b/src/Juvix/Compiler/Core/Language/Info/LocationInfo.hs @@ -1,6 +1,6 @@ -module Juvix.Core.Language.Info.LocationInfo where +module Juvix.Compiler.Core.Language.Info.LocationInfo where -import Juvix.Core.Language.Base +import Juvix.Compiler.Core.Language.Base newtype LocationInfo = LocationInfo {_infoLocation :: Location} diff --git a/src/Juvix/Core/Language/Info/NameInfo.hs b/src/Juvix/Compiler/Core/Language/Info/NameInfo.hs similarity index 59% rename from src/Juvix/Core/Language/Info/NameInfo.hs rename to src/Juvix/Compiler/Core/Language/Info/NameInfo.hs index ad07d56ac5..0e444a2551 100644 --- a/src/Juvix/Core/Language/Info/NameInfo.hs +++ b/src/Juvix/Compiler/Core/Language/Info/NameInfo.hs @@ -1,6 +1,6 @@ -module Juvix.Core.Language.Info.NameInfo where +module Juvix.Compiler.Core.Language.Info.NameInfo where -import Juvix.Core.Language.Base +import Juvix.Compiler.Core.Language.Base newtype NameInfo = NameInfo {_infoName :: Name} diff --git a/src/Juvix/Core/Language/Info/TypeInfo.hs b/src/Juvix/Compiler/Core/Language/Info/TypeInfo.hs similarity index 51% rename from src/Juvix/Core/Language/Info/TypeInfo.hs rename to src/Juvix/Compiler/Core/Language/Info/TypeInfo.hs index 3006c4ffb5..4d4b54683f 100644 --- a/src/Juvix/Core/Language/Info/TypeInfo.hs +++ b/src/Juvix/Compiler/Core/Language/Info/TypeInfo.hs @@ -1,7 +1,7 @@ -module Juvix.Core.Language.Info.TypeInfo where +module Juvix.Compiler.Core.Language.Info.TypeInfo where -import Juvix.Core.Language.Base -import Juvix.Core.Language.Type +import Juvix.Compiler.Core.Language.Base +import Juvix.Compiler.Core.Language.Type newtype TypeInfo = TypeInfo {_infoType :: Type} diff --git a/src/Juvix/Core/Language/Type.hs b/src/Juvix/Compiler/Core/Language/Type.hs similarity index 61% rename from src/Juvix/Core/Language/Type.hs rename to src/Juvix/Compiler/Core/Language/Type.hs index 8fbea3c0dd..0ad4289b06 100644 --- a/src/Juvix/Core/Language/Type.hs +++ b/src/Juvix/Compiler/Core/Language/Type.hs @@ -1,6 +1,6 @@ -module Juvix.Core.Language.Type where +module Juvix.Compiler.Core.Language.Type where -import Juvix.Core.Language.Base +import Juvix.Compiler.Core.Language.Base data Type = Atomic Atom | Fun Type Type | Universe