Tom
Tom

Reputation: 135

Fibonacci sequence value in haskell

how to get sum of fibonacci sequence using that code:

fibs= 0 : 1 : zipWith (+) fibs (tail fibs)

edit: take 5 fibs gives list of [0,1,1,2,3], so the value of 5th element is 3, to extract it we have to type : 'last(take(5 fibs))' and we get 3. And so on

if we use interpreter to seek for 5th element we get list of [ 0, 1, 2, 3] the last element is the same what value of 5th element, how to get LAST element of that list? Can I 'make' it using last , do you have any ideas, could you?

Upvotes: 0

Views: 322

Answers (3)

LazerOptyx
LazerOptyx

Reputation: 11

Well, if you just want the 10th element of the list:

last (take 10 fibs)

if you want the sum of the first 10 elements:

sum (take 10 fibs)

BTW there is a slightly simpler expression for fibs, using just recursion:

fibs = (fibgen 0 1) where fibgen a b = a : fibgen b (a+b)

Upvotes: 1

Don Stewart
Don Stewart

Reputation: 138007

That definition yields an infinite stream of integers. There is no last element.

If instead you want to index a particular element from the list, you can do so with the (!!) operator:

> [1..] !! 7
8

Upvotes: 5

jwodder
jwodder

Reputation: 57650

I'm not entirely clear what you're asking, but if you have a non-empty non-infinite (i.e., not fibs but, for example, take n fibs for some n) list, you can indeed obtain its last element by applying last to it. Alternatively, if you just want the n-th element of a list (starting at zero and assuming the list has at least n+1 elements), you can do listName !! n to extract it.

Upvotes: 4

Related Questions