Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
bertolo

duvida em recursao

Recommended Posts

bertolo


data State = Initial Float | Iter_1 Float Float | AnyIter Float Float Float

findFixed :: Float -> State ->Int ->String
findFixed _ _ Q = "insucesso"
findFixed b (Initial s) n
   | isFixed() =  "Sucesso"
   | otherwise findFixed(itera State)


nao quis incluir o código na totalidade porque nao achei necessário e nao quero que me façam o trabalho :(. A ideia é, eu na posso iterar porque o meu return é uma string e estou a iterar sobre estados e floats.

como se resolve um problema deste genero em haskel?

nota: nao compila porque o return do caso de paragem, caso de sucesso são uma string e em caso de insucesso itera

erro: Instance of Num [Char] required for definition of findFixed

Abraços

Share this post


Link to post
Share on other sites
Baderous

O que é isFixed()? Em Haskell não se usa essa notação estilo C, se isFixed é uma função que devolve um booleano, basta ter isFixed. Se tiver argumentos usas isFixed x y.

Também não percebo o que queres fazer com itera State, uma vez que State é um tipo e não uma variável, e para além disso estás a invocar findFixed com apenas 1 argumento.

Share this post


Link to post
Share on other sites
bertolo

itera :: Float -> State -> State

itera b (AnyIter a s d) = (AnyIter s d (logistica b d))

itera b (Iter_1 a s) = (AnyIter a s (logistica b s))

itera b (Initial a) = (Iter_1 a (logistica b a))

logistica :: Float -> Float -> Float

logistica b x = b*x*(1-x)

isFixed :: State -> Bool

isFixed (Iter_1 a s) = (s-a) < max_dist

isFixed (AnyIter a s d) = (s-d) < max_dist

Aquilo era uma espécie de pseudo código em C. Estas são as funções

O erro corrigi eu mais tarde ao reparar que estava mal, antes de notar que já tinhas respondido. A ideia é iterar um State (desta forma: Initial a -> Iter_1 a(estado anterior) s(estado novo) -> AnyIter a s d(novo estado) -> AnyIter s d f -> etc etc

Share this post


Link to post
Share on other sites
Betovsky

Está tudo muito confuso. Eu ainda não percebi o que é pretendido :/


"Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !"

Sign on a computer system consultant's desk

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.