caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] :: operator not quotable using ( ... )
@ 2002-04-24  4:16 John Prevost
  2002-04-24 10:56 ` Remi VANICAT
  0 siblings, 1 reply; 3+ messages in thread
From: John Prevost @ 2002-04-24  4:16 UTC (permalink / raw)
  To: caml-list

When writing an example just now for this list, I noticed that you can
no longer (assuming you ever could) write (::) or any variation
thereof to refer to the definition of the :: cons operator.  Since
there is no other standard way to write this, one must use:

let cons x y = x :: y

to get one.  This is unfortunate when you wish to, say, define map in
terms of fold.  My suspicion is that it may have worked in the past,
but broken by keyword argument parsing.  Is there any chance (::)
could be special cased to work correctly, even though it conflicts
with (x : y) for typing?  I don't think it likely that anybody would
write (::) intending to express a type.

John.
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


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

* Re: [Caml-list] :: operator not quotable using ( ... )
  2002-04-24  4:16 [Caml-list] :: operator not quotable using ( ... ) John Prevost
@ 2002-04-24 10:56 ` Remi VANICAT
  2002-04-24 21:11   ` John Prevost
  0 siblings, 1 reply; 3+ messages in thread
From: Remi VANICAT @ 2002-04-24 10:56 UTC (permalink / raw)
  To: caml-list

John Prevost <visigoth@cs.cmu.edu> writes:

> When writing an example just now for this list, I noticed that you can
> no longer (assuming you ever could) write (::) or any variation
> thereof to refer to the definition of the :: cons operator.  Since
> there is no other standard way to write this, one must use:

cons is not really an operator, it's a constructor

> 
> let cons x y = x :: y

the same hold for any constructor :

moi@debian:~/prog/ocaml-cvs$ ocaml
        Objective Caml version 3.04

# type foo =
    Bar of int * int;;
type foo = Bar of int * int
# Bar;;
The constructor Bar expects 2 argument(s),
but is here applied to 0 argument(s)
# 

you have to write

let bar x y = Bar (x, y)


> 
> to get one.  This is unfortunate when you wish to, say, define map in
> terms of fold.  My suspicion is that it may have worked in the past,
> but broken by keyword argument parsing.  Is there any chance (::)
> could be special cased to work correctly, even though it conflicts
> with (x : y) for typing?  I don't think it likely that anybody would
> write (::) intending to express a type.

I don't know, but the true problem is the possibility to implicitly
define function that correspond to constructor.

-- 
Rémi Vanicat
vanicat@labri.u-bordeaux.fr
http://dept-info.labri.u-bordeaux.fr/~vanicat
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


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

* Re: [Caml-list] :: operator not quotable using ( ... )
  2002-04-24 10:56 ` Remi VANICAT
@ 2002-04-24 21:11   ` John Prevost
  0 siblings, 0 replies; 3+ messages in thread
From: John Prevost @ 2002-04-24 21:11 UTC (permalink / raw)
  To: Remi VANICAT; +Cc: caml-list

>>>>> "rv" == Remi VANICAT <vanicat@labri.u-bordeaux.fr> writes:

    rv> cons is not really an operator, it's a constructor

    >>  let cons x y = x :: y

    rv> the same hold for any constructor :

Ahh, I had forgotten, thanks.  It might be good, then, to cause (::)
to return the same kind of error as a constructor does, instead of:

# Cons;;
The constructor Cons expects 2 argument(s),
but is here applied to 0 argument(s)
# (::);;
Syntax error

At the very least, this will remind people what the real problem is.
Making constructors usable as functions might be desirable, but I'm
okay with not having it as long as we have good error messages.  :)

John.
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


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

end of thread, other threads:[~2002-04-25  8:52 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-04-24  4:16 [Caml-list] :: operator not quotable using ( ... ) John Prevost
2002-04-24 10:56 ` Remi VANICAT
2002-04-24 21:11   ` John Prevost

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