Main program for lambda lifter
> module Main where
> import LambdaLift
> import Utilities
> import Print
> import Test
> main =
> putStr ("\nInput expression " ++ pprintExpr inputExpr ++
> "\nResult\n" ++ output ++
> "\nFully lazy \n" ++ pprintSCs (fullyLazyLift inputExpr) ++
> "\n")
> where
> inputExpr = program
> output = pprintSCs (lambdaLift inputExpr)
> {- OLD: 1.2
> main ~(Str argString : ~(Str input : rest)) =
>
> -- GetArgs :
> -- ReadFile file :
>
> AppendChan stdout ( -- "Args " ++ argString ++
>
> -- "\nInput file " ++ file ++
> -- "\nInput data " ++ input ++
>
> "\nInput expression " ++ pprintExpr inputExpr ++
> "\nResult\n" ++ output ++
> "\nFully lazy \n" ++ pprintSCs (fullyLazyLift inputExpr) ++
> "\n") :
> []
>
> where
> args = my_splitAt '\n' argString
> file = args !! 0
> inputExpr = program
> output = pprintSCs (lambdaLift inputExpr)
> -}
|my_splitAt| splits a list into a list of lists, starting a new list
whenever a given element occurs. The result always contains at least
one list, possibly empty.
> my_splitAt x [] = [[]]
> my_splitAt x (y:ys) | y == x = [] : my_splitAt x ys
> | otherwise = (y:ys1) : yss where (ys1:yss) = my_splitAt x ys
|