aboutsummaryrefslogtreecommitdiffstats
path: root/autotypes/src/AutoTypes.hs
diff options
context:
space:
mode:
Diffstat (limited to 'autotypes/src/AutoTypes.hs')
-rw-r--r--autotypes/src/AutoTypes.hs25
1 files changed, 25 insertions, 0 deletions
diff --git a/autotypes/src/AutoTypes.hs b/autotypes/src/AutoTypes.hs
new file mode 100644
index 0000000..c5a43d1
--- /dev/null
+++ b/autotypes/src/AutoTypes.hs
@@ -0,0 +1,25 @@
+module AutoTypes
+ ( autoTypes,
+ autoTypes',
+ )
+where
+
+import Debug.Trace
+import qualified AutoTypes.Unify as U
+import Data.Aeson (Value, decodeFileStrict', encode)
+import Data.Maybe (fromJust)
+import System.Environment (getArgs)
+import System.FilePath (takeFileName)
+
+autoTypes :: FilePath -> [FilePath] -> IO U.T
+autoTypes fp fps = autoTypes' <$> go fp <*> mapM go (fp : fps)
+ where go = fmap fromJust . decodeFileStrict'
+
+autoTypes' :: Value -> [Value] -> U.T
+autoTypes' t' ts' =
+ let types = map U.fromJson (Debug.Trace.traceShowId (t' : ts'))
+ in head
+ ( foldr1
+ (\ls rs -> (concat [U.unify1 l r | l <- ls, r <- rs]))
+ (map (: []) types)
+ )