[Haskell-cafe] Functional progr., images, laziness and alltherest

Brian Hulley brianh at metamilk.com
Thu Jun 22 15:13:55 EDT 2006

Stepan Golosunov wrote:
> On Thu, Jun 22, 2006 at 03:32:25PM +0100, Brian Hulley wrote:
>> Bill Wood wrote:
>>> On Thu, 2006-06-22 at 15:16 +0100, Brian Hulley wrote:
>>>  . . .
>>>> But how does this change the fact that y still has 1 more element
>>>> than yq? yq is after all, not a circular list.
>>>> I don't see why induction can't just be applied infinitely to prove
>>>> this.
>>> The set of all non-negative integers has "one more element" than the
>>> set of all positive integers, however they have the same
>>> cardinality, aleph-null.  This phenomenon is the hallmark of
>>> infinite sets.
>> Therefore the list of non-negative integers is longer than the list
>> of positive integers. I agree they have the same cardinality but
>> this doesn't mean they have the same length.
> Are you saying that some of the (0,1,2,3,4,5,...), (1,2,3,4,5,...) and
> (1-1,2-1,3-1,4-1,5-1,...) lists have different lengths?

I'd say that the list [0,1,2,3,4,5,..] is longer than [1,2,3,4,5,..] and 
that [1-1,2-1,3-1,4-1,5-1,..] ie [0,1,2,3,4,..] is the same length as 
[1,2,3,4,5,..], assuming that they all grow at the same rate. I think of 
them as physically growing objects, which at any moment have a finite 
length, not as some kind of fixed "infinite" structure.

I don't believe in the abstract mathematical notion of infinity. I just see 
it as a kind of hack that makes conventional mathematics workable to some 
extent, although as everyone knows there are plenty of contradictions in it. 
This doesn't mean that these contradictions reflect reality - just that 
maths hasn't yet reached a true understanding of reality imho.

For example, why do people accept that infinity == infinity + 1 ? Surely 
this expression is just ill-typed. infinity can't be a number. Maths was 
developed before programming languages so perhaps the concept of well typed 
expressions was not known when infinity was invented.

Still, as others have pointed out in offlist emails, I can't really take 
this line of reasoning further without providing an alternative system, and 
to be honest, I don't have one (yet :-) ).

If I was going to try to re-write the foundations of mathematics, I'd start 
by re-reading the book "On the origin of objects" by Brian Cantwell Smith, 
which blows apart many of the things that logical systems of thought often 
seem to take for granted about the nature of reality. For example he talks 
about particularity and individuality, and the idea that something can be a 
particular entity without being an individual, so (this is just my thought 
now) perhaps one of the problems with (infinity + 1) is that it is an 
attempt to add a particular number which is not an individual number, namely 
infinity, with an individual number, so there is no "individual component" 
of infinity to add the 1 onto...

In any case, if I just use the subset of Haskell equivalent to strict 
evaluation with force/delay lists (as in my alternative definition of the 
filter function),  I can reason about my programs without entering the areas 
of maths that I don't believe in, which is one more reason for my desire to 
have a totally strict version of Haskell ;-)

Best regards (also thanks to everyone else who replied),

Logic empowers us and Love gives us purpose.
Yet still phantoms restless for eras long past,
congealed in the present in unthought forms,
strive mightily unseen to destroy us.


More information about the Haskell-Cafe mailing list