data List a = Nil | Cons a (List a) deriving Show acrostic :: List (List String) -> String acrostic Nil = [] acrostic (Cons (Cons (c:_) _) others) = c : acrostic others acrostic (Cons _ others) = acrostic others ex = acrostic (Cons (Cons "Finally" (Cons "I" Nil)) -- prima listă interioară (Cons Nil -- lista #2 (Cons (Cons "Understand" (Cons "What" (Cons "I" Nil))) -- #3 (Cons (Cons "Need" (Cons "To" Nil)) -- #4 (Cons (Cons "Code" Nil) -- #5 (Cons (Cons "To" (Cons "Solve" (Cons "This" Nil))) -- #6 (Cons (Cons "Interesting" (Cons "And" Nil)) -- #7 (Cons (Cons "Original" Nil) -- #8 (Cons (Cons "" (Cons "Task" (Cons "Right" Nil))) -- #9 (Cons (Cons "Now!" Nil) -- #10 Nil)))))))))) {- Barem: - cazul de bază (lista mare vidă) (1 = 0.5 * 2 - pattern, rezultat) - cazul în care avem ce extrage (Cons (Cons (c:_) _) others) (2 = 0.5 * 4 - pattern lista mare, pattern lista mică, adăugare caracter, apel recursiv) - cazul de listă interioară vidă (1 = 0.5 * 2 - pattern, apel recursiv) - cazul de listă interioară care începe cu un String vid (1 = 0.5 * 2 - pattern, apel recursiv) -}