caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* let int = ?([' ' '\t'] '-') digits+
@ 2007-06-29 15:39 Jon Harrop
  2007-06-29 15:56 ` [Caml-list] " Robert C Fischer
                   ` (3 more replies)
  0 siblings, 4 replies; 14+ messages in thread
From: Jon Harrop @ 2007-06-29 15:39 UTC (permalink / raw)
  To: Caml List


If OCaml's lexer handled numbers of this format, would it be possible to 
write:

  f -1 -2

to mean:

  f (-1) (-2)

rather than:

  f - 1 - 2

Is this a good idea?

-- 
Dr Jon D Harrop, Flying Frog Consultancy Ltd.
The OCaml Journal
http://www.ffconsultancy.com/products/ocaml_journal/?e


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Caml-list] let int = ?([' ' '\t'] '-') digits+
  2007-06-29 15:39 let int = ?([' ' '\t'] '-') digits+ Jon Harrop
@ 2007-06-29 15:56 ` Robert C Fischer
  2007-06-29 16:32   ` Brian Hurt
  2007-06-29 16:40   ` Jon Harrop
  2007-06-29 15:57 ` pzimmer
                   ` (2 subsequent siblings)
  3 siblings, 2 replies; 14+ messages in thread
From: Robert C Fischer @ 2007-06-29 15:56 UTC (permalink / raw)
  To: Caml List

How would I write f - 1 to mean "one less than the value of f"?

~~ Robert.

Jon Harrop wrote:
> If OCaml's lexer handled numbers of this format, would it be possible to 
> write:
>
>   f -1 -2
>
> to mean:
>
>   f (-1) (-2)
>
> rather than:
>
>   f - 1 - 2
>
> Is this a good idea?
>
>   


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Caml-list] let int = ?([' ' '\t'] '-') digits+
  2007-06-29 15:39 let int = ?([' ' '\t'] '-') digits+ Jon Harrop
  2007-06-29 15:56 ` [Caml-list] " Robert C Fischer
@ 2007-06-29 15:57 ` pzimmer
  2007-06-29 16:35   ` Robert C Fischer
  2007-06-29 16:41   ` Jon Harrop
  2007-06-29 17:57 ` Stefan Monnier
  2007-06-29 18:29 ` [Caml-list] " skaller
  3 siblings, 2 replies; 14+ messages in thread
From: pzimmer @ 2007-06-29 15:57 UTC (permalink / raw)
  To: Caml List

Do you really want

x-3*7

to be interpreted as

(x (-3)) * 7

?


On Fri, 2007-06-29 at 16:39 +0100, Jon Harrop wrote:
> If OCaml's lexer handled numbers of this format, would it be possible to 
> write:
> 
>   f -1 -2
> 
> to mean:
> 
>   f (-1) (-2)
> 
> rather than:
> 
>   f - 1 - 2
> 
> Is this a good idea?
> 


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Caml-list] let int = ?([' ' '\t'] '-') digits+
  2007-06-29 15:56 ` [Caml-list] " Robert C Fischer
@ 2007-06-29 16:32   ` Brian Hurt
  2007-06-29 16:40   ` Jon Harrop
  1 sibling, 0 replies; 14+ messages in thread
From: Brian Hurt @ 2007-06-29 16:32 UTC (permalink / raw)
  To: Caml List

Robert C Fischer wrote:

> How would I write f - 1 to mean "one less than the value of f"?


In this proposal, you'd write f - 1, with the space between the - and 
the 1 being important.

That said, the next complaint will be that Ocaml "misinterprets"  f -x  
as ( - ) f x, and not the "obviously correct" f (-x).

Brian


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Caml-list] let int = ?([' ' '\t'] '-') digits+
  2007-06-29 15:57 ` pzimmer
@ 2007-06-29 16:35   ` Robert C Fischer
  2007-06-29 16:41   ` Jon Harrop
  1 sibling, 0 replies; 14+ messages in thread
From: Robert C Fischer @ 2007-06-29 16:35 UTC (permalink / raw)
  To: Caml List

This got filtered out, I think, so I'm trying again:

How would one express "one less than the value returned by function f" 
if f -1 was treated as f(-1)?

~~ Robert.

pzimmer@janestcapital.com wrote:
> Do you really want
>
> x-3*7
>
> to be interpreted as
>
> (x (-3)) * 7
>
> ?
>
>
> On Fri, 2007-06-29 at 16:39 +0100, Jon Harrop wrote:
>   
>> If OCaml's lexer handled numbers of this format, would it be possible to 
>> write:
>>
>>   f -1 -2
>>
>> to mean:
>>
>>   f (-1) (-2)
>>
>> rather than:
>>
>>   f - 1 - 2
>>
>> Is this a good idea?
>>
>>     
>
> _______________________________________________
> Caml-list mailing list. Subscription management:
> http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
> Archives: http://caml.inria.fr
> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> Bug reports: http://caml.inria.fr/bin/caml-bugs
>
>   


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Caml-list] let int = ?([' ' '\t'] '-') digits+
  2007-06-29 15:56 ` [Caml-list] " Robert C Fischer
  2007-06-29 16:32   ` Brian Hurt
@ 2007-06-29 16:40   ` Jon Harrop
  2007-06-29 18:21     ` Philippe Wang
  1 sibling, 1 reply; 14+ messages in thread
From: Jon Harrop @ 2007-06-29 16:40 UTC (permalink / raw)
  To: Caml List

On Friday 29 June 2007 16:56:45 Robert C Fischer wrote:
> How would I write f - 1 to mean "one less than the value of f"?

As:

  f - 1

The space before the digit means that it will not match this regexp.

Or:

  f-1

The lack of a space before the "-" means that it will not match this regexp.

-- 
Dr Jon D Harrop, Flying Frog Consultancy Ltd.
The OCaml Journal
http://www.ffconsultancy.com/products/ocaml_journal/?e


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Caml-list] let int = ?([' ' '\t'] '-') digits+
  2007-06-29 15:57 ` pzimmer
  2007-06-29 16:35   ` Robert C Fischer
@ 2007-06-29 16:41   ` Jon Harrop
  1 sibling, 0 replies; 14+ messages in thread
From: Jon Harrop @ 2007-06-29 16:41 UTC (permalink / raw)
  To: caml-list

On Friday 29 June 2007 16:57:26 pzimmer@janestcapital.com wrote:
> Do you really want
>
> x-3*7
>
> to be interpreted as
>
> (x (-3)) * 7

Unless I am mistaken, that would not match this regexp (there is no space 
before the "-") so it would be lexed and parsed conventionally.

-- 
Dr Jon D Harrop, Flying Frog Consultancy Ltd.
The OCaml Journal
http://www.ffconsultancy.com/products/ocaml_journal/?e


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: let int = ?([' ' '\t'] '-') digits+
  2007-06-29 15:39 let int = ?([' ' '\t'] '-') digits+ Jon Harrop
  2007-06-29 15:56 ` [Caml-list] " Robert C Fischer
  2007-06-29 15:57 ` pzimmer
@ 2007-06-29 17:57 ` Stefan Monnier
  2007-06-29 18:11   ` [Caml-list] " Robert C Fischer
  2007-06-29 18:29 ` [Caml-list] " skaller
  3 siblings, 1 reply; 14+ messages in thread
From: Stefan Monnier @ 2007-06-29 17:57 UTC (permalink / raw)
  To: caml-list

> Is this a good idea?

Don't think so: it doesn't help the case where you want to use negation on
a variable rather than a constant, so it introduces a fairly
subtle inconsistency which doesn't seem to be worth the trouble.

I guess in Haskell you could use type class trickery so that

  "f - 3" substracts 3 from f if f is numeric and passes -3 to f if f is
  a function (I leave the case where f is both a function and a member of
  the Number class as an exercise to the user).

that would be even more evil,


        Stefan


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Caml-list] Re: let int = ?([' ' '\t'] '-') digits+
  2007-06-29 17:57 ` Stefan Monnier
@ 2007-06-29 18:11   ` Robert C Fischer
  2007-06-29 21:05     ` Jon Harrop
  0 siblings, 1 reply; 14+ messages in thread
From: Robert C Fischer @ 2007-06-29 18:11 UTC (permalink / raw)
  To: caml-list

Syntax polymorphism violates the principle of least surprise.  It is, 
indeed, Teh Eevil.

~~ Robert.

Stefan Monnier wrote:
>> Is this a good idea?
>>     
>
> Don't think so: it doesn't help the case where you want to use negation on
> a variable rather than a constant, so it introduces a fairly
> subtle inconsistency which doesn't seem to be worth the trouble.
>
> I guess in Haskell you could use type class trickery so that
>
>   "f - 3" substracts 3 from f if f is numeric and passes -3 to f if f is
>   a function (I leave the case where f is both a function and a member of
>   the Number class as an exercise to the user).
>
> that would be even more evil,
>
>
>         Stefan
>
> _______________________________________________
> Caml-list mailing list. Subscription management:
> http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
> Archives: http://caml.inria.fr
> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> Bug reports: http://caml.inria.fr/bin/caml-bugs
>
>   


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Caml-list] let int = ?([' ' '\t'] '-') digits+
  2007-06-29 16:40   ` Jon Harrop
@ 2007-06-29 18:21     ` Philippe Wang
  0 siblings, 0 replies; 14+ messages in thread
From: Philippe Wang @ 2007-06-29 18:21 UTC (permalink / raw)
  To: Jon Harrop, ocaml ml

Jon Harrop wrote:
> On Friday 29 June 2007 16:56:45 Robert C Fischer wrote:
>   
>> How would I write f - 1 to mean "one less than the value of f"?
>>     
>
> As:
>
>   f - 1
>
> The space before the digit means that it will not match this regexp.
>
> Or:
>
>   f-1
>
> The lack of a space before the "-" means that it will not match this regexp.
I think it's quite too hard to explain, and it leads you to make 
mistakes too easily.

By the way, I wonder how you could explain that to students learning the 
language...

What I think is that :
- whether they know nothing about programming : then they end up 
thinking it's quite too ugly...
- whether they already know something about programming : they would 
think that the language is ugly and stick to those they already know...

Anyways, I really wouldn't want that.
One should not have to spend ten years to learn a programming language, 
just because of such tricks.

--
Philippe Wang
  mail[at]philippewang.info


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Caml-list] let int = ?([' ' '\t'] '-') digits+
  2007-06-29 15:39 let int = ?([' ' '\t'] '-') digits+ Jon Harrop
                   ` (2 preceding siblings ...)
  2007-06-29 17:57 ` Stefan Monnier
@ 2007-06-29 18:29 ` skaller
  2007-06-29 18:53   ` Pal-Kristian Engstad
  3 siblings, 1 reply; 14+ messages in thread
From: skaller @ 2007-06-29 18:29 UTC (permalink / raw)
  To: Jon Harrop; +Cc: Caml List

On Fri, 2007-06-29 at 16:39 +0100, Jon Harrop wrote:
> If OCaml's lexer handled numbers of this format, would it be possible to 
> write:
> 
>   f -1 -2
> 
> to mean:
> 
>   f (-1) (-2)
> 
> rather than:
> 
>   f - 1 - 2
> 
> Is this a good idea?

No, I don't think so, because

	-1

and

	- 1

would then be distinct, and there's be confusion with:

	x-1

which would actually mean

	x (-1)

rather than

	x - 1

That would break reams of code .. ;(

-- 
John Skaller <skaller at users dot sf dot net>
Felix, successor to C++: http://felix.sf.net


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Caml-list] let int = ?([' ' '\t'] '-') digits+
  2007-06-29 18:29 ` [Caml-list] " skaller
@ 2007-06-29 18:53   ` Pal-Kristian Engstad
  2007-06-29 19:21     ` Daniel Bünzli
  0 siblings, 1 reply; 14+ messages in thread
From: Pal-Kristian Engstad @ 2007-06-29 18:53 UTC (permalink / raw)
  To: skaller; +Cc: caml-list

I think you all misunderstand his proposal. He wants:

q - 1 => Add(q, -1)
q -1 => Apply(q, -1)
q-1 => Add(q, -1)

In other words, a space followed by a negative, followed by a number is 
to be parsed as a number.

PKE.

skaller wrote:
> On Fri, 2007-06-29 at 16:39 +0100, Jon Harrop wrote:
>   
>> If OCaml's lexer handled numbers of this format, would it be possible to 
>> write:
>>
>>   f -1 -2
>>
>> to mean:
>>
>>   f (-1) (-2)
>>
>> rather than:
>>
>>   f - 1 - 2
>>
>> Is this a good idea?
>>     
>
> No, I don't think so, because
>
> 	-1
>
> and
>
> 	- 1
>
> would then be distinct, and there's be confusion with:
>
> 	x-1
>
> which would actually mean
>
> 	x (-1)
>
> rather than
>
> 	x - 1
>
> That would break reams of code .. ;(
>
>   

-- 
Pål-Kristian Engstad (engstad@naughtydog.com), Lead Graphics & Engine Programmer,  
"Uncharted"-team, Naughty Dog, Inc., 1601 Cloverfield Blvd, 6000 North,
Santa Monica, CA 90404, USA. Ph.: (310) 633-9112.

"Most of us would do well to remember that there is a reason Carmack
is Carmack, and we are not Carmack.",
                       Jonathan Blow, 2/1/2006, GD Algo Mailing List




^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Caml-list] let int = ?([' ' '\t'] '-') digits+
  2007-06-29 18:53   ` Pal-Kristian Engstad
@ 2007-06-29 19:21     ` Daniel Bünzli
  0 siblings, 0 replies; 14+ messages in thread
From: Daniel Bünzli @ 2007-06-29 19:21 UTC (permalink / raw)
  To: caml-list


Le 29 juin 07 à 20:53, Pal-Kristian Engstad a écrit :

> I think you all misunderstand his proposal. He wants:
>
> q - 1 => Add(q, -1)
> q -1 => Apply(q, -1)
> q-1 => Add(q, -1)

However we all understood it's a bad idea.

Daniel


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Caml-list] Re: let int = ?([' ' '\t'] '-') digits+
  2007-06-29 18:11   ` [Caml-list] " Robert C Fischer
@ 2007-06-29 21:05     ` Jon Harrop
  0 siblings, 0 replies; 14+ messages in thread
From: Jon Harrop @ 2007-06-29 21:05 UTC (permalink / raw)
  To: caml-list, robert.fischer

On Friday 29 June 2007 19:11:23 Robert C Fischer wrote:
> Syntax polymorphism violates the principle of least surprise.  It is,
> indeed, Teh Eevil.

The designers of OCaml clearly disagreed when they went out of their way to 
remove superfluous parentheses:

  [1, 2]

I am taking the idea further, AFAICT.

-- 
Dr Jon D Harrop, Flying Frog Consultancy Ltd.
The OCaml Journal
http://www.ffconsultancy.com/products/ocaml_journal/?e


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2007-06-29 21:11 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-06-29 15:39 let int = ?([' ' '\t'] '-') digits+ Jon Harrop
2007-06-29 15:56 ` [Caml-list] " Robert C Fischer
2007-06-29 16:32   ` Brian Hurt
2007-06-29 16:40   ` Jon Harrop
2007-06-29 18:21     ` Philippe Wang
2007-06-29 15:57 ` pzimmer
2007-06-29 16:35   ` Robert C Fischer
2007-06-29 16:41   ` Jon Harrop
2007-06-29 17:57 ` Stefan Monnier
2007-06-29 18:11   ` [Caml-list] " Robert C Fischer
2007-06-29 21:05     ` Jon Harrop
2007-06-29 18:29 ` [Caml-list] " skaller
2007-06-29 18:53   ` Pal-Kristian Engstad
2007-06-29 19:21     ` Daniel Bünzli

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).