module Language.Noodle.Lib.Boolean(env,decls) where

import Language.Noodle.Evaluation

env    = extenv decls
decls  = [("&&",   extfun band)
         ,("||",   extfun bor)
         ,("true", Thunk btrue)
         ,("false",Thunk bfalse)
         ,("isNot",extfun bnot) ]

btrue  = return $ Symbol "True"
bfalse = return $ Nil

band :: Val -> IO Val
band Nil = bfalse
band _   = return $ extfun (\x -> return x)

bor Nil   = return $ extfun (\x -> return x)
bor first = return $ first

bnot Nil = btrue
bnot _   = bfalse