-- $Id: back_prop.hs,v 1.5 2004/03/31 13:51:15 orlov Exp $ module Main ( main ) where import Prelude hiding (Num (negate)) import Char import IOExts import Parse import XSG import URA progs = unsafePerformIO $ compileFile "back_prop.xsg" prog1 = take 7 progs prog2 = drop 7 progs cio n = ((es_in, es_out), []) where es_in = [lst (map (\i -> x [i]) [1..n])] es_out = [toOI n, x [0]] str :: String -> Exp str [] = at "NIL" str (c:cs) = cons (at [c]) (str cs) lst :: [Exp] -> Exp lst [] = at "NIL" lst (e:es) = cons e (lst es) at :: String -> Exp at s = c s [] toOI 0 = at "O" toOI n = c "I" [toOI (n-1)] cons :: Exp -> Exp -> Exp cons e1 e2 = c "CONS" [e1, e2] x = VAR . X back_prop n = xURA prog1 prog2 (cio n) main = do x <- getChar y <- getChar let n = (digitToInt x)*10 + (digitToInt y) print (back_prop n)