crislanio_macedo Posted March 18, 2014 Report Share Posted March 18, 2014 nextPerm INPUT : Lista u de elementos ordenáveis. O UTPUT : Próxima permutação lexicográfica de u ou lançar exceção se não for possível. A próxima permutação lexicográfica de uma lista u de elemen- tos ordenáveis é obtida aplicando-se o seguinte al- goritmo, Link to comment Share on other sites More sharing options...
thoga31 Posted March 18, 2014 Report Share Posted March 18, 2014 Ok, está aí o enunciado. Estás à espera que to resolvamos? Nós ajudamos e orientamos os membros a encontrarem a solução por si mesmos, e não damos soluções feitas. Além do mais, pedir trabalhos feitos é contra as Regras do Fórum. Portanto, o que já tentaste fazer? Quais são as tuas dúvidas concretas? Knowledge is free! Link to comment Share on other sites More sharing options...
crislanio_macedo Posted March 18, 2014 Author Report Share Posted March 18, 2014 esqueci de colocar como estava a fazer o enunciado: estou a fazer uma disciplina de programação funcional no Brasil e sou iniciante na linguagem haskell. Link to comment Share on other sites More sharing options...
thoga31 Posted March 19, 2014 Report Share Posted March 19, 2014 (edited) Ficámos na mesma. Portanto, repito: o que já tentaste fazer? Quais são as tuas dúvidas concretas? Edited March 19, 2014 by thoga31 Knowledge is free! Link to comment Share on other sites More sharing options...
crislanio_macedo Posted March 21, 2014 Author Report Share Posted March 21, 2014 coloca a [] = [] --coloca a (y:xs) = coloca a y --coloca a u =[ [a,y] | y<-u] coloca a (y:u) =[a,y]:(coloca a u) {- [1,2] 1:[ [1,2]] ++ 1[] -} partes [] = [] partes (x:l) = coloca x (partes l) ++ partes l Bom pessoal a intenção era gerar todas as permutações mas dá um erro que não sei corrigi-lo. Link to comment Share on other sites More sharing options...
thoga31 Posted March 21, 2014 Report Share Posted March 21, 2014 Qual é o erro, e onde ocorre? Qual o objectivo dessas funções? O que são os seus argumentos? Tens de te mentalizar de uma coisa: nós não adivinhamos. Para podermos dar uma boa ajuda, convém darem-nos boas informações. 😉 Knowledge is free! Link to comment Share on other sites More sharing options...
crislanio_macedo Posted March 22, 2014 Author Report Share Posted March 22, 2014 (edited) A função coloca um numero em uma lista e essa mesma lista retornará uma lista de lista: *Main> coloca 12 [1,2,3] [[12,1],[12,2],[12,3]] coloca a [] = [] coloca a (y:u) =[a,y]:(coloca a u) [1,2] 1:[ [1,2]] ++ 1[] a função partes daria o conjunto das partes a saber : todas as posiveis permutações de valores da lista: ,mas ela retorna o erro: Occurs check: cannot construct the infinite type: t0 = [t0] Expected type: [t0] Actual type: [[t0]] In the return type of a call of `partes' In the second argument of `coloca', namely `(partes l)' Failed, modules loaded: none. não sei como proceder com o problema, me ajudem !!! partes [] = [] partes (x:l) = coloca x (partes l) ++ partes l Edited March 22, 2014 by thoga31 Formatação do post + tags code + GeSHi Link to comment Share on other sites More sharing options...
thoga31 Posted March 22, 2014 Report Share Posted March 22, 2014 A função coloca devolve um resultado do tipo [[t0]], e a função partes devolve [t0]. Estás a tentar unir uma list com uma list of list. É isto que o Haskell te está a dizer: "Expected type: [t0], Actual type: [[t0]]" - esperava o tipo [t0], mas obteve [[t0]], o que é inválido. Knowledge is free! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now