diff options
Diffstat (limited to 'autotypes/src/AutoTypes.hs')
-rw-r--r-- | autotypes/src/AutoTypes.hs | 25 |
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) + ) |