From 814ebc1ac0fe3c43d9afb8a25e7fe832d6205157 Mon Sep 17 00:00:00 2001 From: Martin Fredin Date: Mon, 15 May 2023 00:28:40 +0200 Subject: [PATCH] Fix primitives definitions and comment out eta expander util fixed --- src/Main.hs | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/src/Main.hs b/src/Main.hs index 817bfc9..74f2d1e 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -117,37 +117,37 @@ main' opts s = do file <- readFile s - + let file' = if opts.preludeOpt then file ++ primitives else file ++ primitives ++ prelude parsed <- fromErr . pProgram . resolveLayout True $ myLexer file' when opts.logIL (printToErr "-- Parse Tree -- " >> log parsed) - + let desugared = desugar parsed when opts.logIL (printToErr "-- Desugar --" >> log desugared) - - _ <- fromErr $ reportForall (fromJust opts.typechecker) desugared - renamed <- fromErr $ (rename <=< annotateForall) desugared - when opts.logIL (printToErr "\n-- Renamer --" >> log renamed) - - typechecked <- fromErr $ typecheck (fromJust opts.typechecker) (orderDefs renamed) + _ <- fromErr $ reportForall (fromJust opts.typechecker) desugared + renamed <- fromErr $ orderDefs <$> (rename <=< annotateForall) desugared + when opts.logIL (printToErr "\n-- Renamer --" >> log renamed) + + + typechecked <- fromErr $ typecheck (fromJust opts.typechecker) renamed when opts.logIL (printToErr "\n-- TypeChecker --" >> log typechecked) - let etaexpanded = expand typechecked - when opts.logIL (printToErr "\n-- Eta expander --" >> log etaexpanded) + -- let etaexpanded = expand typechecked + -- when opts.logIL (printToErr "\n-- Eta expander --" >> log etaexpanded) - - let lifted = lambdaLift etaexpanded + + let lifted = lambdaLift typechecked when opts.logIL (printToErr "\n-- Lambda Lifter --" >> log lifted) - + let monomorphized = monomorphize lifted when opts.logIL (printToErr "\n -- Monomorphizer --" >> log monomorphized) - + generatedCode <- fromErr $ generateCode monomorphized (gc opts) -- generatedCode <- fromErr $ generateCode monomorphized False @@ -206,8 +206,8 @@ primitives = , ".== a b = case a < b of" , " False => case b < a of" , " False => True" - , " _ => False" - , " False => False" + , " True => False" + , " True => False" ] prelude :: String @@ -237,5 +237,7 @@ prelude = , "\n" , "data Pair a b where" , " Pair : a -> b -> Pair a b" + , "\n" + , "asciiCode : Char -> Int" , "asciiCode x = case x of { 'a' => 97; 'b' => 98; 'c' => 99; 'd' => 100; 'e' => 101; 'f' => 102; 'g' => 103; 'h' => 104; 'i' => 105; 'j' => 106; 'k' => 107; 'l' => 108; 'm' => 109; 'n' => 110; 'o' => 111; 'p' => 112; 'q' => 113; 's' => 114; 't' => 115; 'u' => 116; 'v' => 117; 'w' => 118; 'x' => 119; 'y' => 120; 'z' => 121; }" ]