I need help with the following error please. Basically for a given list of items I want to create a function that checks if an item is in that list. In order to do that I turn the list into a set and then create a closure around that set.
toAccept :: Ord a => [a] -> (a -> Bool)
toAccept xs =
let xset = Set.fromList xs in
let
-- accept:: Ord a => a -> Bool
accept x = Set.member xset x in
accept
What I am getting is
Could not deduce (a ~ Set.Set (Set.Set a))
from the context (Ord a)
bound by the type signature for
toAccept :: Ord a => [a] -> a -> Bool
at Tokens.hs:6:13-39
`a' is a rigid type variable bound by
the type signature for toAccept :: Ord a => [a] -> a -> Bool
at Tokens.hs:6:13
Expected type: a -> Bool
Actual type: Set.Set (Set.Set a) -> Bool
In the expression: accept
In the expression: let accept x = Set.member xset x in accept
In the expression:
let xset = Set.fromList xs in
let accept x = Set.member xset x in accept
What am I doing wrong?