Re: [Haskell-cafe] Is () a 0-length tuple?
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?
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?
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/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?
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/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?
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/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?
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