[project @ 1996-07-25 21:02:03 by partain]
[nofib.git] / real / lift / Main.lhs
1 Main program for lambda lifter
2
3 > module Main where
4
5
6 > import LambdaLift
7 > import Utilities
8 > import Print
9 > import Test
10
11 > main =
12
13 >       putStr ("\nInput expression " ++ pprintExpr inputExpr ++
14 >               "\nResult\n" ++ output ++
15 >               "\nFully lazy \n" ++ pprintSCs (fullyLazyLift inputExpr) ++
16 >               "\n")
17 >     where
18 >     inputExpr = program
19 >     output = pprintSCs (lambdaLift inputExpr)
20
21 > {- OLD: 1.2
22 > main ~(Str argString : ~(Str input : rest)) = 
23
24 -->     GetArgs :
25 -->     ReadFile file :
26
27 >       AppendChan stdout ( -- "Args " ++ argString ++
28
29 >               -- "\nInput file " ++ file ++ 
30 >               -- "\nInput data " ++ input ++
31
32 >               "\nInput expression " ++ pprintExpr inputExpr ++
33 >               "\nResult\n" ++ output ++
34 >               "\nFully lazy \n" ++ pprintSCs (fullyLazyLift inputExpr) ++
35 >               "\n") :
36 >       []
37
38 >     where
39 >     args = my_splitAt '\n' argString
40 >     file = args !! 0
41 >     inputExpr = program
42 >     output = pprintSCs (lambdaLift inputExpr)
43 >-}
44
45
46 |my_splitAt| splits a list into a list of lists, starting a new list
47 whenever a given element occurs.  The result always contains at least
48 one list, possibly empty.
49
50 > my_splitAt x [] = [[]]
51 > my_splitAt x (y:ys) | y == x    =  [] : my_splitAt x ys
52 >                  | otherwise =  (y:ys1) : yss where (ys1:yss) = my_splitAt x ys