Я пытаюсь удалить определенного актера из списка актеров, так как есть дубликаты. У меня есть эти функции, которые делают то, что я хочу, но мне нужно, чтобы они связывались. Две функции, которые мне нужно связать, - это createWholeActorList
и removeAllActor
.Как связать эти две функции Haskell вместе?
type Actor = String
type Actors = [Actor]
showActors :: Film -> Actors --Outputs a list of the Actors in the film
showActors (_,a,_,_) = a
actorsInFilm :: Actor -> [Actors]
actorsInFilm actor = map showActors (filmsActorIsIn actor)
createWholeActorList :: Actor -> Actors
createWholeActorList actor = concat (actorsInFilm actor)
removeAllActor :: Actor -> Actors -> Actors
removeAllActor _ [] = []
removeAllActor actor (head:tail)
| head == actor = removeAllActor actor tail
| head /= actor = head : removeAllActor actor tail
Если этот способ сложный, существует ли способ использования понимания списка для достижения желаемого результата?
Списки являются заведомо плохой структурой данных для беспокоясь о дубликатах, но это может помочь вам выглядеть в источнике ['Data.List.nub'] (http://hackage.haskell.org/package/base-4.7.0.1/docs/src/Data-List.html#nub), поскольку он выполняет эту операцию (хотя и относительно медленно). – bheklilr