# [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),
Brian.

--
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.

http://www.metamilk.com

```