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
{-#####################################################
#######################################################
##################################################### -}