naiveAnd name =
    let impl (x:xs) = reduceFn ands x xs
          where ands (Boolean a) (Boolean b) = Boolean $ a && b
                ands _           _           = boolError
    in functionFactory name boolId impl
naiveAnd name =
    let impl (x:xs) = reduceFn ands x xs
          where ands (Boolean a) (Boolean b) = Boolean $ a && b
                ands _           _           = boolError
    in functionFactory name boolId impl
naiveAnd name =
    let impl (x:xs) = reduceFn ands x xs
          where ands (Boolean a) (Boolean b) = Boolean $ a && b
                ands _           _           = boolError
    in functionFactory name boolId impl