Re: [Haskell-cafe] Is () a 0-length tuple?

2009-11-08 Thread Ketil Malde
Eugene Kirpichov ekirpic...@gmail.com writes:

 In JavaScript there is a null value, that is the only value of the null 
 type.
 Isn't () the same thing?  The only value of the unary type?

 No, () has two values: () and undefined (t.i., _|_).

I'd argue that yes, they're the same thing, since any function returning
null in JS might also fail to terminate or terminate with an
exception.

-k
-- 
If I haven't seen further, it is by standing in the footprints of giants
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Is () a 0-length tuple?

2009-11-08 Thread Svein Ove Aas
On Sun, Nov 8, 2009 at 9:52 AM, Ketil Malde ke...@malde.org wrote:
 Eugene Kirpichov ekirpic...@gmail.com writes:

 In JavaScript there is a null value, that is the only value of the null 
 type.
 Isn't () the same thing?  The only value of the unary type?

 No, () has two values: () and undefined (t.i., _|_).

How should I put it..?
undefined is bottom, but bottom is not undefined?

There are plenty of other constructions that are bottom. Infinite
loops, throws, errors.. common for all of them, of course, is that you
can't pattern-match on them or otherwise use them in pure code, and
they generally don't act like values.

So, can't we just say that () has a single value, namely ()? It'd make
this much simpler, and we won't have to deal with the Nihil monoid.

==

data Nihil

instance Monoid Nihil where
  mappend _ _ = undefined

-- 
Svein Ove Aas
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Is () a 0-length tuple?

2009-11-08 Thread Conor McBride

How about this?

{-# LANGUAGE ThinkTotal #-}

On 8 Nov 2009, at 09:53, Svein Ove Aas wrote:


On Sun, Nov 8, 2009 at 9:52 AM, Ketil Malde ke...@malde.org wrote:

Eugene Kirpichov ekirpic...@gmail.com writes:

In JavaScript there is a null value, that is the only value of  
the null type.

Isn't () the same thing?  The only value of the unary type?



No, () has two values: () and undefined (t.i., _|_).


() is the only value of ().

If we could agree a standard set of email pragmas, we could save
ourselves a lot of violent agreement.

Cheers

Conor

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Is () a 0-length tuple?

2009-11-08 Thread Deniz Dogan
2009/11/7 Matthew Gruen wikigraceno...@gmail.com:
 Forgot to cc haskell-cafe. Trying again:

 -- Forwarded message --
 From: Matthew Gruen wikigraceno...@gmail.com
 Date: Sat, Nov 7, 2009 at 2:16 PM
 Subject: Re: [Haskell-cafe] Is () a 0-length tuple?
 To: Pasqualino Titto Assini tittoass...@gmail.com

 On Sat, Nov 7, 2009 at 2:00 PM, Pasqualino Titto Assini
 tittoass...@gmail.com wrote:
 The syntax is similar, but what else is?

 In JavaScript there is a null value, that is the only value of the null 
 type.

 Isn't () the same thing?  The only value of the unary type?

 Best,

                 titto

 Pasqualino Titto Assini, Ph.D.
 http://quicquid.org/

 In JavaScript's case, there is not a null type. The null value belongs
 to the 'object' type, whereas the undefined value belongs to the
 'undefined' type. This is all a lot less useful when you realize that
 JavaScript has a dynamic type system. But this is JSON, not
 JavaScript.

 In JSON, arrays, objects, strings, and numbers can be any number of
 values. Booleans can be two values. Null can only be one value.
 Personally, I think a better mapping for () would be JSNull, since
 both have only one value in normal form. However, there is not
 necessarily any natural mapping between Haskell values and JSON
 values. The library tries to provide as many as possible, including
 (), which it happens to map to JSArray [] instead of JSNull. As long
 as the library is internally consistent, though, it should be fine.

What point are you trying to make by distinguishing JSON from
JavaScript? JSON is a subset of JavaScript, they share the same type
system. Null can be only one value. This doesn't make sense to me,
since as you say null is not a type, but a value.

-- 
Deniz Dogan
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Is () a 0-length tuple?

2009-11-08 Thread Matthew Gruen
On Sun, Nov 8, 2009 at 6:21 AM, Deniz Dogan deniz.a.m.do...@gmail.com
wrote:
 What point are you trying to make by distinguishing JSON from
 JavaScript? JSON is a subset of JavaScript, they share the same type
 system. Null can be only one value. This doesn't make sense to me,
 since as you say null is not a type, but a value.

 --
 Deniz Dogan


It seems I underestimated the typedness of null in JavaScript :) I checked
the ECMAScript specification, and it does refer to a null type.. so titto
was right.[1] My opinion is that JSON's 'type system' should be analyzed
orthogonal to JavaScript's regardless. If JSON is a subset of JavaScript, it
is primarily a syntactic one. When I said Null can be only one value,
implying that null is a type, I was referring to JSON's null, not
JavaScript's null. In JSON, null *is* definitely a unit type. When
considering mappings between Haskell and JSON in the case of (), we should
see that () is a unit type in Haskell, null is a unit type in JSON
(regardless of its role in JavaScript), and maybe try to associate them.

—Matt

[1] I was misled by the fact that typeof null = 'object'. The logic behind
this, I think, is that null is meant to be bound to a variable that would
otherwise be a reference to an actual object value. Many have criticized
this result, e.g. Douglas Crockford (
http://javascript.crockford.com/remedial.html)
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Is () a 0-length tuple?

2009-11-08 Thread Deniz Dogan
2009/11/8 Matthew Gruen wikigraceno...@gmail.com:
 On Sun, Nov 8, 2009 at 6:21 AM, Deniz Dogan deniz.a.m.do...@gmail.com
 wrote:
 What point are you trying to make by distinguishing JSON from
 JavaScript? JSON is a subset of JavaScript, they share the same type
 system. Null can be only one value. This doesn't make sense to me,
 since as you say null is not a type, but a value.

 --
 Deniz Dogan


 It seems I underestimated the typedness of null in JavaScript :) I checked
 the ECMAScript specification, and it does refer to a null type.. so titto
 was right.[1] My opinion is that JSON's 'type system' should be analyzed
 orthogonal to JavaScript's regardless. If JSON is a subset of JavaScript, it
 is primarily a syntactic one. When I said Null can be only one value,
 implying that null is a type, I was referring to JSON's null, not
 JavaScript's null. In JSON, null *is* definitely a unit type. When
 considering mappings between Haskell and JSON in the case of (), we should
 see that () is a unit type in Haskell, null is a unit type in JSON
 (regardless of its role in JavaScript), and maybe try to associate them.

 —Matt

 [1] I was misled by the fact that typeof null = 'object'. The logic behind
 this, I think, is that null is meant to be bound to a variable that would
 otherwise be a reference to an actual object value. Many have criticized
 this result, e.g. Douglas Crockford
 (http://javascript.crockford.com/remedial.html)


Let's keep in mind when reading the ECMAScript specification that
JavaScript is merely based on it and breaks it on several different
points. :)

-- 
Deniz Dogan
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Fwd: [Haskell-cafe] Is () a 0-length tuple?

2009-11-07 Thread Pasqualino Titto Assini
The syntax is similar, but what else is?

In JavaScript there is a null value, that is the only value of the null type.

Isn't () the same thing?  The only value of the unary type?

Best,

                titto


2009/11/6 John Dorsey hask...@colquitt.org:
 In what sense () is a 0-length tuple?

 In what sense isn't it?

 Data.Tuple is much to narrow to be of any use here.  () is in at least most,
 if not all, of the type classes that tuples are in.  The syntax is
 strikingly similar.

 If you ask me, it walks/quacks/smells like a duck, so it's a duck.

 Regards,
 John

 ___
 Haskell-Cafe mailing list
 Haskell-Cafe@haskell.org
 http://www.haskell.org/mailman/listinfo/haskell-cafe




-- 
Pasqualino Titto Assini, Ph.D.
http://quicquid.org/
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Is () a 0-length tuple?

2009-11-07 Thread Eugene Kirpichov
2009/11/7 Pasqualino Titto Assini tittoass...@gmail.com:
 The syntax is similar, but what else is?

 In JavaScript there is a null value, that is the only value of the null 
 type.

 Isn't () the same thing?  The only value of the unary type?

No, () has two values: () and undefined (t.i., _|_).

 Best,

                 titto


 2009/11/6 John Dorsey hask...@colquitt.org:
 In what sense () is a 0-length tuple?

 In what sense isn't it?

 Data.Tuple is much to narrow to be of any use here.  () is in at least most,
 if not all, of the type classes that tuples are in.  The syntax is
 strikingly similar.

 If you ask me, it walks/quacks/smells like a duck, so it's a duck.

 Regards,
 John

 ___
 Haskell-Cafe mailing list
 Haskell-Cafe@haskell.org
 http://www.haskell.org/mailman/listinfo/haskell-cafe




 --
 Pasqualino Titto Assini, Ph.D.
 http://quicquid.org/
 ___
 Haskell-Cafe mailing list
 Haskell-Cafe@haskell.org
 http://www.haskell.org/mailman/listinfo/haskell-cafe




-- 
Eugene Kirpichov
Web IR developer, market.yandex.ru
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Is () a 0-length tuple?

2009-11-07 Thread Matthew Gruen
Forgot to cc haskell-cafe. Trying again:

-- Forwarded message --
From: Matthew Gruen wikigraceno...@gmail.com
Date: Sat, Nov 7, 2009 at 2:16 PM
Subject: Re: [Haskell-cafe] Is () a 0-length tuple?
To: Pasqualino Titto Assini tittoass...@gmail.com

On Sat, Nov 7, 2009 at 2:00 PM, Pasqualino Titto Assini
tittoass...@gmail.com wrote:
 The syntax is similar, but what else is?

 In JavaScript there is a null value, that is the only value of the null 
 type.

 Isn't () the same thing?  The only value of the unary type?

 Best,

                 titto

 Pasqualino Titto Assini, Ph.D.
 http://quicquid.org/

In JavaScript's case, there is not a null type. The null value belongs
to the 'object' type, whereas the undefined value belongs to the
'undefined' type. This is all a lot less useful when you realize that
JavaScript has a dynamic type system. But this is JSON, not
JavaScript.

In JSON, arrays, objects, strings, and numbers can be any number of
values. Booleans can be two values. Null can only be one value.
Personally, I think a better mapping for () would be JSNull, since
both have only one value in normal form. However, there is not
necessarily any natural mapping between Haskell values and JSON
values. The library tries to provide as many as possible, including
(), which it happens to map to JSArray [] instead of JSNull. As long
as the library is internally consistent, though, it should be fine.
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe