Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

RafaelOliveira

Duvida numa função

Mensagens Recomendadas

RafaelOliveira    0
RafaelOliveira

Boas, estou com uma duvida nesta parte da função:

let text = splitRegex (mkRegex "\t") (head(lines a));

tipo eu queria que o mkRegex em vez de actuar apenas sobre a uma string, queria que ela executa-se sobre todas as lines de a

Podem me ajudar?? B)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
sl0w    0
sl0w

Boas.

Podes aplicar o map, mas isso devolve-te uma string list list. Se este tipo de retorno não te é conveniente, uma alternativa seria usar o fold.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
RafaelOliveira    0
RafaelOliveira

Não podes explicar melhor??

Se poderes modifica a parte da função que eu dei utilizando a tua ideia

com a minha função ele da por exemplo ["duvida","numa","função"]

contudo se eu no ficheiro tiver ["duvida\tnuma\tfunção\nnao\tconsigo\tresolver\n"]

ele apenas me faz para a primeira frase, mas eu queria que ele fizes-se para todas as que existir

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
sl0w    0
sl0w

Eu não programa muito em haskell, mas programo em Ocaml que é uma linguagem da mesma familia do haskell, por isso não te garanto o que estou a sugerir a solução haskelliana de fazer a coisa. De qualquer das formas, partindo da tua função:

let text = splitRegex (mkRegex "\t") (head(lines a));

Aquele head está-te a devolver a cabeça da lista, neste contexto será a primeira linha da string. Se queres aplicar a função a todos os elementos (linhas) da lista começa por tirar essa função. Agora quanto ao map: O map aplica uma função F a todos os elementos E de uma lista e devolve outra lista contendo F(E). Neste caso, queremos aplicar a splitRegex a todas as linhas da lista, certo? Então fica assim:

let text = map (splitRegex (mkRegex "\t")) (lines a);

Não testei mas penso que tem tudo para estar correcto. Podes também usar o Fold, mas isso deixo para ti descobrir como se faz.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade