Im begier with haskell and im trying to execute my method mostrarDocumento, setting Documentos and String(year), and the method should retu all documents that have the same year , but i having the error :
No instance for (Ord Documento) arising from a use of ‘insert’
In a stmt of a 'do' block:
insert docu (mostrarDocumento' documentos ao)
In the expression:
do { insert docu (mostrarDocumento' documentos ao) }
In the expression:
if esAoIgual docu ao then
do { insert docu (mostrarDocumento' documentos ao) }
else
mostrarDocumento' documentos ao
Someone can help me with my code?
module Documento where
import Data.List
import Data.Function (on)
import System.IO()
type Revista = String
type IdD = String
type Ao = String
type Titulo = String
type Resumen = String
type Secciones = [String]
data Documento = D (Revista, IdD, Ao, Titulo, Resumen, Secciones)deriving Show
type Documentos = [Documento]
anio :: Documento -> Ao
anio (D (_,_,anio,_,_,_)) = anio
pintarDocOrd :: Documentos -> IO()
pintarDocOrd [] = retu ()
pintarDocOrd (dc:dcs) = do
print dc
pintarDocOrd dcs
mostrarDocumeto :: Documentos -> String-> IO()
mostrarDocumeto [] _ = retu ()
mostrarDocumeto documentos ao = do
let documento = mostrarDocumento' documentos ao
pintarDocOrd documento
mostrarDocumento' :: Documentos -> String -> Documentos
mostrarDocumento' [] _ = []
mostrarDocumento' (docu:documentos) ao =
if esAoIgual docu ao then do
insert docu (mostrarDocumento' documentos ao)
else
mostrarDocumento' documentos ao
esAoIgual :: Documento -> String -> Bool
esAoIgual documento ao
| anio documento == ao = True
| otherwise = False
