Sum Syn 20
Center
imports
{
import System.Environment( getArgs )
import System.CPUTime
}
DATA Root
| Root tree: Tree
DATA Tree
| Node left: Tree right: Tree
| Leaf value: Int
ATTR Tree Root [ | | sval : Int ]
ATTR Tree [ | | sval2, sval3, sval4, sval5, sval6, sval7, sval8, sval9, sval10,
sval11, sval12, sval13, sval14, sval15, sval16, sval17, sval18,
sval19, sval20 USE {+} {0} : Int ]
SEM Root
| Root lhs.sval = @tree.sval + @tree.sval2 + @tree.sval3 + @tree.sval4 + @tree.sval5
+ @tree.sval6 + @tree.sval7 + @tree.sval8 + @tree.sval9 + @tree.sval10
+ @tree.sval11 + @tree.sval12 + @tree.sval13 + @tree.sval14 + @tree.sval15
+ @tree.sval16 + @tree.sval17 + @tree.sval18 + @tree.sval19 + @tree.sval20
SEM Tree
| Leaf lhs.sval = @value
| Leaf lhs.sval2 = @value
| Leaf lhs.sval3 = @value
| Leaf lhs.sval4 = @value
| Leaf lhs.sval5 = @value
| Leaf lhs.sval6 = @value
| Leaf lhs.sval7 = @value
| Leaf lhs.sval8 = @value
| Leaf lhs.sval9 = @value
| Leaf lhs.sval10 = @value
| Leaf lhs.sval11 = @value
| Leaf lhs.sval12 = @value
| Leaf lhs.sval13 = @value
| Leaf lhs.sval14 = @value
| Leaf lhs.sval15 = @value
| Leaf lhs.sval16 = @value
| Leaf lhs.sval17 = @value
| Leaf lhs.sval18 = @value
| Leaf lhs.sval19 = @value
| Leaf lhs.sval20 = @value
{
genTree 0 = sem_Tree_Leaf 2
genTree n = sem_Tree_Node (genTree $ n-1) (genTree $ n-1)
main = do
(cant:_) <- getArgs
let p = cpuTimePrecision
t1 <- getCPUTime
print $ (sem_Root_Root (genTree (read cant)))
t2 <- getCPUTime
print $ (t2 - t1) `div` p
}