module HW9 where

import Hugs.Prelude

 

 

{-#####################################################

exercise 12.1

#####################################################  -}

 

(/=)::Eq a=>a->a->Bool

(/=) x y=not (x==y)

 

{-#####################################################

exercise 12.2

#####################################################  -}

           

numEqual:: Eq a=>[a]->a->Int

numEqual lst n=sum[ 1 | el<-lst, el==n  ]

           

 

member lst n = (numEqual lst n) > 0

 

{-#####################################################

exercise 12.3

#####################################################  -}

 

oneLookupFirst::Eq a=>[(a,b)]->a->b

oneLookupFirst ((a1,b):xs) a

            | a1==a=b

            | otherwise=oneLookupFirst xs a

           

 

oneLookupSecond::Eq b=>[(a,b)]->b->a

oneLookupSecond ((a,b1):xs) b

            | b1==b=a

            | otherwise=oneLookupSecond xs b

 

{-#####################################################

exercise 17.22

fibonacci and factorial

 

Fn=Fn-1+Fn-2

 

n!=n*(n-1)*(n-2)*.......3*2*1

#####################################################  -}

fibo a1 a2=a1 : fibo a2 (a1+a2)

 

fibonacci=0:1: fibo 1 2

 

-- ***********************************

 

facto x y= x:  facto (x*y) (y+1)

 

factorial=1:facto 1 2

 

 

{-#####################################################

#######################################################

#####################################################  -}