Database Haskell-格式问题
这是我必须显示数据库信息的当前代码,但是当打印出来时,阅读起来不是很清楚Database Haskell-格式问题,database,function,haskell,formatting,higher-order-functions,Database,Function,Haskell,Formatting,Higher Order Functions,这是我必须显示数据库信息的当前代码,但是当打印出来时,阅读起来不是很清楚 type Title = String type Cast = String type Year = Int type Fans = String type Film = (Title, [Cast], Year, [Fans]) type Database = [Film] testDatabase :: Database testDatabase = [("Casino Royale", ["Daniel Crai
type Title = String
type Cast = String
type Year = Int
type Fans = String
type Film = (Title, [Cast], Year, [Fans])
type Database = [Film]
testDatabase :: Database
testDatabase = [("Casino Royale", ["Daniel Craig", "Eva Green", "Judi Dench"], 2006, ["Garry", "Dave", "Zoe", "Kevin", "Emma"]),
("Cowboys & Aliens", ["Harrison Ford", "Daniel Craig", "Olivia Wilde"], 2011, ["Bill", "Jo", "Garry", "Kevin", "Olga", "Liz"]),
("Catch Me If You Can", ["Leonardo DiCaprio", "Tom Hanks"], 2002, ["Zoe", "Heidi", "Jo", "Emma", "Liz", "Sam", "Olga", "Kevin", "Tim"])]
运行此功能时:
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
它打印这个:
[(“皇家赌场”]、[“丹尼尔·克雷格”、“伊娃·格林”、“朱迪·丹奇”]、2006[“加里”、“戴夫”、“佐伊”、“凯文”、“艾玛”]、(“牛仔与外星人”、[“哈里森·福特”、“丹尼尔·克雷格”、“奥利维亚·王尔德”]、2011、[“比尔”、“乔”、“加里”、“凯文”、“奥尔加”、“利兹”]、(“如果你能抓住我”、[“莱昂纳多·迪卡普里奥”、“汤姆·汉克斯”]、2002、[“佐伊”、“海蒂”、“乔”、“埃玛”、“利兹”、“萨姆”、“奥尔加”、“凯文”、“蒂姆”])]
这显然是不可读的:是否有一种方法可以使每个胶片信息(在这种情况下)打印在单独的行上,即使用/n符号
非常感谢您的帮助,提前感谢!:)
这是怎么回事
定义为打印
print :: Show a => a -> IO () print x = putStrLn (show x)
- 如何解释地图?。。。你知道
做什么,是吗?给定一个函数和一个列表,它将函数应用于列表的每个元素,并返回一个结果列表map
采用类型为map
的函数,但a->b
采用类型为mapM\u
的函数(我正在简化)。a->iob
意味着该功能可能会执行一些i/o操作(在这种情况下:写入屏幕,这就是IO
的功能)print
将所有独立的i/o连接在一起,并确保它们以正确的顺序出现mapM
- 您原来的
实际上没有做任何事情:输出与输入相同,将任何内容打印到屏幕上的唯一原因是您从ghci提示符运行它displayAllFilms
- 它的拼写是
,而不是\n
(虽然我没有明确地使用它,因为/n
打印
/
会在末尾自动添加一个换行符)计算机strln
print :: Show a => a -> IO ()
print x = putStrLn (show x)