2017-03-17 7 views
0
data Film = Film String String Int [String] deriving (Eq, Ord, Show, Read) 
--that's my custom data type, (Film *filmname, director, year of release, fans) 

addFilm :: Film -> [Film] -> [Film] 
addFilm newFilm filmList = filmList ++ [newFilm] 

--this is for adding a new film to the list, but without the fans string array 

모듈이 WinGHCi에 오류없이로드되고 있지만 filmList 대신 무엇을 넣어야할지 모르겠다.filmList 매개 변수의 값으로 무엇을 입력합니까?

--- 
<interactive>:63:30: 
    Couldn't match type `Char' with `Film' 
    Expected type: [Film] 
     Actual type: [Char] 
    In the second argument of `addFilm', namely `"Jordan Vogt-Roberts"' 
    In the expression: 
     addFilm "Kong: Skull Island" "Jordan Vogt-Roberts" 2017 
    In an equation for `it': 
     it = addFilm "Kong: Skull Island" "Jordan Vogt-Roberts" 2017 
*Main> addFilm "Kong: Skull Island" "Jordan Vogt-Roberts" 2017 filmList 

<interactive>:64:57: Not in scope: `filmList' --- that's what I input. 

답변

0

데이터 생성자는 인수가 아니라 데이터 생성자를 사용해야합니다. Film 유형의 값을 생성하려면 예 : Film "Kong: Skull Island" "Jordan Vogt-Roberts" 2017 ["Fan One","Fan Two"]과 같이 작성해야합니다.

더 구체적으로 data TypeName = DataConstructor String과 같은 데이터 선언은 DataConstructor :: String -> TypeName 함수를 만듭니다. 귀하의 경우는 Film :: String -> String -> Int -> [String] -> Film입니다.

예 :

하지만 팬 문자열 배열없이

skullIsland = Film "Kong: Skull Island" "Jordan Vogt-Roberts" 2017 ["Fan One","Fan Two"] 
otherMovie = Film "Movie Name" "The Director" 2000 ["Lazersmoke","Saad"] 

addFilm skullIsland [otherMovie,otherMovie] 

나는 당신이 뭘 하려는지 이해가 확실하지 않다; 팬 목록은 데이터 유형의 일부이므로 무시할 수 없습니다.

+0

나는 그것이 "없이"팬들의 빈 문자열을 의미한다고 생각합니다. 죄송합니다. 감사합니다. – Saad