data Contador = MkContador Integer (Integer -> Contador)

numero::Contador -> Integer
numero (MkContador a b)= a

funcion::Contador -> (Integer -> Contador)
funcion (MkContador a b)= b

cero:: Contador
cero=contado 0

contado::Integer -> Contador 
contado a= MkContador a otro
	where otro b=contado (a+b)

increcendo::Integer -> Contador
increcendo a= MkContador a otro
	where otro b=increcendo (a+1)

prueba::[Integer]
prueba=	let	MkContador num1 next1 = (contado 5)
		MkContador num2 next2 = (next1 100)
		MkContador num3 next3 = (next2 50) in
	[num1,num2,num3]