Haskell 101

January 27, 2008

Checking for a value in a list

Filed under: Functional programming, Haskell, List comprehensions, Pattern matching, Ruby — Haskell 101 blogger @ 9:24 pm

Once we have a list, how do we check whether that list contains a certain value? This is sort of like the Ruby method “include?”.

We want to provide the value we are looking for, and the list in which we would like to look for it.

(1) includes::Int->[Int]->Bool

Let’s first try using pattern matching and recursion.

(2) includes x (y:ys)
      | x==y = True
      |otherwise = includes x ys

In other words, take the head of the provided list and compare it to the desired value. If equal, return true. We don’t need to look anymore, because we know the value is there. If not equal, then we need to keep looking, so recurse, using the tail of the provided list for the next evaluation.

(3) includes x [] = False

We will only get to this step if we have not matched the value before we get to the empty list. if that is the case, then we want to return False.

We’ll look next time at some other, perhaps more elegant, but perhaps slower, way to do this.

Advertisements

Leave a Comment »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Create a free website or blog at WordPress.com.

%d bloggers like this: