Я новичок, любая помощь будет оценена. Моя цель - получить рейтинги от любых Фильм как Float, поэтому я могу правильно манипулировать данными, например, дать «средний рейтинг» для фильма.Haskell, извлечение из кортежей в списке
type Title = String
type Director = String
type Year = Int
type Mark = Int
type Rating = (String, Float)
-- Define Film type here
type Film = (Title, Director, Year, [Rating])
Типичный фильм выглядит
("True Lies", "James Cameron", 1994, [("Dave",3), ("Kevin",10), ("Jo",0)])
Я попытался
extractRating :: Film -> [(String, Float)]
extractRating (_, _, _, rating) = rating
Тогда вызов функции, как этот
putStrLn (extractRating "True Lies")
Если это помогает у НУ помочь мне вот эта ошибка дамп
haskell.hs:82:21:
Couldn't match type ‘(String, Float)’ with ‘Char’
Expected type: String
Actual type: [(String, Float)]
In the first argument of ‘putStrLn’, namely
‘(extractRating "True Lies")’
In a stmt of a 'do' block: putStrLn (extractRating "True Lies")
haskell.hs:82:35:
Couldn't match type ‘[Char]’
with ‘(Title, Director, Year, [Rating])’
Expected type: Film
Actual type: [Char]
In the first argument of ‘extractRating’, namely ‘"True Lies"’
In the first argument of ‘putStrLn’, namely
‘(extractRating "True Lies")’
In a stmt of a 'do' block: putStrLn (extractRating "True Lies")
_ ** Все еще ** _ то, что игра базы данных фильмов ?? – leftaroundabout
Да, еще. Вы будете получать эти сообщения от других, подобных мне ежегодно, считайте это традицией;) –
Вы передаете 'String' в функцию' extractRating', которая ожидает, что тип 'Film' будет единственным аргументом. Кроме того, 'putStrLn' ожидает' String'. Может быть, вы хотите использовать 'print' вместо этого? –