Novato total aquí, luchando.Haskell: ¿Cómo puedo definir una clase de tipo para conjuntos?
Estoy tratando de definir una clase de tipo para los conjuntos. Para este caso solo requeriría la definición de 'existe'. 'exists' tomaría un conjunto y una función en un elemento de conjunto, y devolvería 0 un booleano. ¿Cómo puedo definir eso en Haskell?
¿Está lo siguiente incluso en la dirección correcta? Así que no es la definición de clase y un tipo implementación de conjunto con la lista, por lo que 'existe' devuelve cierto por ahora ..
-- Set.hs --
class Set a b where
exists :: a -> (b -> Bool) -> Bool
-- ListSet.hs --
instance Set ListSet a where
exists a f = True
-
(resultado: Demasiados parámetros para la clase `set ')
Por supuesto, este último requiere que el tipo de elemento sea el último tipo de parámetro para el tipo de conjunto, algo que no siempre es posible, como si quisiéramos crear una instancia para 'a -> Bool'. Las familias de tipos asociados, por otro lado, resolverían eso muy bien. – Carl
¡Gracias! ¡Tengo la segunda manera de trabajar! Debo admitir que no entiendo muy bien lo que sucede allí, pero espero que se me revele ... – tero