data List = { Nil, Cons Int List }

defn add x y = { x + y }
defn mul x y = { x * y }

defn foldr f b l = {
    case l of {
        Nil -> { b }
        Cons x xs -> { f x (foldr f b xs) }
    }
}

defn main = {
    foldr add 0 (Cons 1 (Cons 2 (Cons 3 (Cons 4 Nil)))) +
    foldr mul 1 (Cons 1 (Cons 2 (Cons 3 (Cons 4 Nil))))
}
