2015-03-14 2 views
-2
-- Types 
    type Title = String 

type Actor = String 
type Cast = [Actor] 
type Year = Int 
type Fan = String 
type Fans = [Fan] 
type Period = (Year, Year) 
type Database = [Film] 



testDatabase :: Database 
testDatabase = [("The Gunman", ["Idris Elba", "Sean Penn", " Javier Bardem"], 
       2015,["Garry", "Dave", "Zoe", "Kevin", "Emma"]),("The Shawshank Redemption", ["Tim Robbins", "Morgan Freeman", "Bob Gunton"],1994, ["Bill", "Jo", "Garry"]), 
       ("The Dark Knight", ["Christian Bale", "Heath Ledger","Aaron Eckhart"], 2008, ["Zoe","Heidi", "Jo", "Emma", "Liz", "Sam", "Olga", "Kevin", "Tim"]), 
       ("Inception", ["Leonardo DiCaprio", "Ellen Page"], 2010, ["Jo", "Emma", "Zack", "Olga", "Kevin"])] 


displayAllFilms :: Database ->[(Title, Cast, Year, Fans)] 
displayAllFilms [] = [] 
displayAllFilms ((i, j, k, l): xs) 
    |l == [] = (i, j, k, []) : displayAllFilms xs 
    |otherwise = (i, j, k, l) : displayAllFilms xs 

И я получаю эту ошибку> Я не знаю, что делать. Что такое ошибка?Показать все фильмы в базе данных haskell

*Main> displayAllFilms 

<interactive>:13:1: 
    No instance for (Show (Database -> [(Title, Cast, Year, Fans)])) 
     arising from a use of `print' 
    Possible fix: 
     add an instance declaration for 
     (Show (Database -> [(Title, Cast, Year, Fans)])) 
    In a stmt of an interactive GHCi command: print it 
+0

Я не знаю, почему этот вопрос становится такой негативный прием. Это кажется мне совершенно необычным. – dfeuer

ответ

4

Просмотрите сообщение об ошибке; ghci сообщает, что вы пытаетесь напечатать функцию типа База данных -> [(Title, Cast, Year, Fans)] и что она не знает, как это сделать.

Предположительно, вы пробовали печать displayAllFilms, в то время как вы, вероятно, имел в виду displayAllFilms testDatabase

Смежные вопросы