【发布时间】:2014-10-29 02:06:15
【问题描述】:
我有以下元组:
type Id = Int
type Name = String
type FSK = Int
type Movie = (Id, Name, FSK)
现在我想定义一个从给定列表中提取电影的函数:
extract :: Id -> [Movie] -> (Maybe Movie, [Movie])
extract = .... ??
所以当我给出一个 id 和一个电影列表时,它会提取: 1)Nothing +给定的列表,如果找到了id 2) 只需 + 电影,如果找到给定的 id,则没有该电影的新列表,并且电影从列表中删除
示例:
*Main> extract 0 [(1,"Matrix",16),(2,"Gladiator",0)]
(Nothing,[(1,"Matrix",16),(2,"Gladiator",0)])
*Main> extract 1 [(1,"Matrix",16),(2,"Gladiator",0)]
(Just (1,"Matrix",16),[(2,"Gladiator",0)])
我应该如何定义函数?
【问题讨论】:
-
到目前为止你已经走了多远?
.... ??不是什么尝试。通常你首先对你拥有的东西进行模式匹配,例如你的[Movie]列表。 -
它对
[]有什么作用?它对movie:xs | movie == id有什么作用?它对任何其他情况有什么作用?