-- arith.hs: conjuring simple non-recursive numeric functions -- -- Copyright (C) 2021 Rudy Matela -- Distributed under the 3-Clause BSD licence (see the file LICENSE). import Conjure double :: Int -> Int double 0 = 0 double 1 = 2 double 2 = 4 double 3 = 6 add :: Int -> Int -> Int add 0 0 = 0 add 0 1 = 1 add 1 0 = 1 add 1 1 = 2 square :: Int -> Int square 0 = 0 square 1 = 1 square 2 = 4 tnpo :: Int -> Int tnpo 0 = 1 tnpo 1 = 4 tnpo 2 = 7 main :: IO () main = do conjure "double" double primitives conjure "add" add primitives conjure "square" square primitives conjure "tnpo" tnpo primitives primitives :: [Expr] primitives = [ val (0::Int) , val (1::Int) , value "+" ((+) :: Int -> Int -> Int) , value "*" ((*) :: Int -> Int -> Int) ]