haskell implementation of a sequence

492 views Asked by At

I just started Haskell and I'm struggling!!!

So I need to create a list om Haskell that has the formula
F(n) = (F(n-1)+F(n-2)) * F(n-3)/F(n-4) and I have F(0) =1, F(1)=1,F(2)=1,F(3)=1

So I thought of initializing the first 4 elements of the list and then have a create a recursive function that runs for n>4 and appends the values to the list.

My code looks like this

let F=[1,1,1,1]

fib' n F
    | n<4="less than 4"
    |otherwise = (F(n-1)+F(n-2))*F(n-3)/F(n-4) : fib (n-1) F

My code looks conceptually right to me(not sure though), but I get an incorrect indentation error when i compile it. And am I allowed to initialize the elements of the list in the way that I have?

1

There are 1 answers

0
dfeuer On BEST ANSWER

First off, variables in Haskell have to be lower case. Secondly, Haskell doesn't let you mix integers and fractions so freely as you may be used to from untyped or barely-typed languages. If you want to convert from an Int or an Integer to, say, a Double, you'll need to use fromIntegral. Thirdly, you can't stick a string in a context where you need a number. Fourthly, you may or may not have an indentation problem—be sure not to use tabs in your Haskell files, and to use the GHC option -fwarn-tabs to be sure.

Now we get to the heart of the matter: you're going about this all somewhat wrong. I'm going to give you a hint instead of a full answer:

thesequence = 1 : 1 : 1 : 1 : -- Something goes here that *uses* thesequence