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
