Browse thread
[Caml-list] baffled by semicolon
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | briand@a... |
| Subject: | RE: [Caml-list] baffled by semicolon |
>>>>> "Alex" == Alex Valdez <alexandervaldez@sbcglobal.net> writes: Alex> The following code snippet Alex> let w = area#misc#realize () ; Alex> area#misc#window;; Alex> is the same as Alex> let w = area#misc#realize ( () ; area#misc#window );; interesting. Somehow I managed to edit it poorly, in the file I copied it from, the original statement is actuallly : let w = area#misc#realize () ; area#misc#window and the next statement is a let, so the ;; is not really needed, I just like to put them in for clarity. Alex> which is the same as Alex> let w = area#misc#realize area#misc#window;; Neither of the above works properly : This expression has type Gdk.window = [ `drawable | `gdkwindow ] Gobject.obj but is here used with type unit However your response woke up some neurons - why wouldn't it be : let w = (area#misc#realize ()); area#misc#window ;; Which also makes sense, the first statement being called for a side-effect, and the second is the value for w. ding-ding-ding we have a winner. The above _does_ work. Brian Alex> -----Original Message----- From: Alex> owner-caml-list@pauillac.inria.fr Alex> [mailto:owner-caml-list@pauillac.inria.fr]On Behalf Of Alex> briand@aracnet.com Sent: Wednesday, August 25, 2004 10:23 PM Alex> To: caml-list@pauillac.inria.fr Subject: [Caml-list] baffled Alex> by semicolon Alex> This might really by a lablgtk2 question, but I thought it's Alex> probably more of a ocaml syntax question : Alex> The following works : Alex> let window = GWindow.window ~width:400 ~height:400() ;; Alex> let area = GMisc.drawing_area ~packing:window#add () ;; Alex> let w = area#misc#realize () ; Alex> area#misc#window;; Alex> let drawing = new GDraw.drawable w ;; Alex> However making the simple change Alex> let w = area#misc#realize () ;; Alex> ^^ notice the double semicolon gives an error: This expression Alex> has type unit but is here used with type [> `drawable ] Alex> Gobject.obj Alex> For the simple reason that w has somehow, mysteriously, become Alex> = () instead of Gdk.window which is the value it would acquire Alex> if it was only a single semi-colon. Alex> I went back through the manual and really couldn't find Alex> anything which explained the difference between ; and ;; - so Alex> it's not at all obvious to me what's going on here. I would Alex> think that w would take on the value of evaluating Alex> area#misc#realize () Alex> in either case. Alex> ??? Alex> Brian Alex> ------------------- To unsubscribe, mail Alex> caml-list-request@inria.fr Archives: http://caml.inria.fr Bug Alex> reports: http://caml.inria.fr/bin/caml-bugs FAQ: Alex> http://caml.inria.fr/FAQ/ Beginner's list: Alex> http://groups.yahoo.com/group/ocaml_beginners Alex> ------------------- To unsubscribe, mail Alex> caml-list-request@inria.fr Archives: http://caml.inria.fr Bug Alex> reports: http://caml.inria.fr/bin/caml-bugs FAQ: Alex> http://caml.inria.fr/FAQ/ Beginner's list: Alex> http://groups.yahoo.com/group/ocaml_beginners ------------------- 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