{"id":602,"date":"2014-11-21T07:00:24","date_gmt":"2014-11-21T05:00:24","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=602"},"modified":"2014-12-27T21:40:49","modified_gmt":"2014-12-27T19:40:49","slug":"cuantificadores-sobre-listas","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/cuantificadores-sobre-listas\/","title":{"rendered":"Cuantificadores sobre listas"},"content":{"rendered":"<h4>Enunciado<\/h4>\n<pre lang=\"text\">\n-- Definir la funci\u00f3n \n--    verificaP :: (a -> Bool) -> [[a]] -> Bool\n-- tal que (verificaP p xs) se verifica si cada elemento de la lista xss\n-- contiene alg\u00fan elemento que cumple el predicado p. Por ejemplo,\n--    verificaP odd [[1,3,4,2], [4,5], [9]] == True\n--    verificaP odd [[1,3,4,2], [4,8], [9]] == False\n<\/pre>\n<h4>Soluciones<\/h4>\n<p>[schedule expon=&#8217;2014-11-28&#8242; expat=\u00bb06:00&#8243;]<\/p>\n<ul>\n<li>Las soluciones se pueden escribir en los comentarios hasta el 28 de noviembre.\n<li>El c\u00f3digo se debe escribir entre una l\u00ednea con &#60;pre lang=\u00bbhaskell\u00bb&#62; y otra con &#60;\/pre&#62;\n<\/ul>\n<p>[\/schedule]<\/p>\n<p>[schedule on=&#8217;2014-11-28&#8242; at=\u00bb06:00&#8243;]<\/p>\n<pre lang=\"haskell\">\r\n-- 1\u00aa definici\u00f3n (por comprensi\u00f3n):\r\nverificaP :: (a -> Bool) -> [[a]] -> Bool\r\nverificaP p xss = and [any p xs | xs <- xss]\r\n\r\n-- 2\u00aa definici\u00f3n (por recursi\u00f3n):\r\nverificaP2 :: (a -> Bool) -> [[a]] -> Bool\r\nverificaP2 p []       = True\r\nverificaP2 p (xs:xss) = any p xs && verificaP2 p xss\r\n\r\n-- 3\u00aa definici\u00f3n (por plegado):\r\nverificaP3 :: (a -> Bool) -> [[a]] -> Bool\r\nverificaP3 p = foldr ((&&) . any p) True\r\n\r\n-- 4\u00aa definici\u00f3n (con cuantificadores)\r\nverificaP4 :: (a -> Bool) -> [[a]] -> Bool\r\nverificaP4 p = all (any p)\r\n\r\n-- 5\u00aa definici\u00f3n (con cuantificadores y composici\u00f3n)\r\nverificaP5 :: (a -> Bool) -> [[a]] -> Bool\r\nverificaP5 = all . any \r\n<\/pre>\n<p>[\/schedule]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Enunciado &#8212; Definir la funci\u00f3n &#8212; verificaP :: (a -> Bool) -> [[a]] -> Bool &#8212; tal que (verificaP p xs) se verifica si cada elemento de la lista xss &#8212; contiene alg\u00fan elemento que cumple el predicado p. Por ejemplo, &#8212; verificaP odd [[1,3,4,2], [4,5], [9]] == True &#8212; verificaP odd [[1,3,4,2], [4,8], [9]]&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"footnotes":"","_jetpack_memberships_contains_paid_content":false},"categories":[4],"tags":[41,100,163,8,94,11,90,6],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/602"}],"collection":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/comments?post=602"}],"version-history":[{"count":7,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/602\/revisions"}],"predecessor-version":[{"id":735,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/602\/revisions\/735"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=602"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=602"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=602"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}