Haskell:
Analisando HTML

Como Fazer:

Para analisar HTML em Haskell, utilizaremos a biblioteca tagsoup pela sua simplicidade e flexibilidade. Primeiro, certifique-se de instalar a biblioteca adicionando tagsoup ao arquivo cabal do seu projeto ou executando cabal install tagsoup.

{-# LANGUAGE OverloadedStrings #-}

import Text.HTML.TagSoup

-- HTML de amostra para demonstração
let sampleHtml = "<html><body><p>Aprenda Haskell!</p><a href='http://example.com'>Clique Aqui</a></body></html>"

-- Analisa o HTML e filtra por links (tags a)
let tags = parseTags sampleHtml
let links = [fromAttrib "href" tag | tag <- tags, isTagOpenName "a" tag]

-- Imprime os links extraídos
print links

Saída de amostra:

["http://example.com"]

Para necessidades mais sofisticadas de análise de HTML, considere usar a biblioteca pandoc, especialmente se estiver trabalhando com conversão de documentos. É excepcionalmente versátil, mas vem com mais complexidade:

import Text.Pandoc

-- Assumindo que você tem um documento Pandoc (doc) carregado, por exemplo, de ler um arquivo
let doc = ... -- Seu documento Pandoc vai aqui

-- Converte o documento para uma string HTML
let htmlString = writeHtmlString def doc

-- Agora, você analisaria `htmlString` como acima ou prosseguiria conforme suas necessidades.

Lembre-se de que pandoc é uma biblioteca muito maior, focada na conversão entre inúmeros formatos de marcação, então use-a se precisar dessas capacidades extras ou se já estiver lidando com formatos de documentos em sua aplicação.