-- oddeven.hs: conjuring even and odd from two sets of ingredients
--
-- Copyright (C) 2025 Rudy Matela
-- Distributed under the 3-Clause BSD licence (see the file LICENSE).
import Conjure
import Prelude hiding (odd, even)
odd :: Int -> Bool
odd 0 = False
odd 1 = True
odd 2 = False
odd 3 = True
odd 4 = False
odd 5 = True
even :: Int -> Bool
even 0 = True
even 1 = False
even 2 = True
even 3 = False
even 4 = True
even 5 = False
main :: IO ()
main = do
conjure "odd" odd ingredients1
conjure "even" even ingredients1
conjure "odd" odd ingredients2
conjure "even" even ingredients2
ingredients1 :: [Ingredient]
ingredients1 =
[ unfun (0::Int)
, unfun (1::Int)
, unfun (2::Int)
, fun "+" ((+) :: Int -> Int -> Int)
, fun "-" ((-) :: Int -> Int -> Int)
, unfun False
, unfun True
]
ingredients2 :: [Ingredient]
ingredients2 =
[ unfun (0::Int)
, unfun (1::Int)
, unfun (2::Int)
, fun "+" ((+) :: Int -> Int -> Int)
, fun "`mod`" (mod :: Int -> Int -> Int)
, fun "==" ((==) :: Int -> Int -> Bool)
]