Version française
Home     About     Download     Resources     Contact us    
Browse thread
[Caml-list] serious type confusion
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: briand@a...
Subject: [Caml-list] serious type confusion

OK, this is what I get for coding too long in scheme :-)

observe the following:

# let a=ref [];;
val a : '_a list ref = {contents = []}
# a := {x=0.;y=0.;z=0.} :: [];;
- : unit = ()
# !a;;
- : point list = [{x = 0.; y = 0.; z = 0.}]
# a := {x=0.;y=0.;z=0.} :: !a;;
- : unit = ()
# !a
  ;;
- : point list = [{x = 0.; y = 0.; z = 0.}; {x = 0.; y = 0.; z = 0.}]
# 

Exactly as expected !  types aren't so bad after all..  until here :

              current_polyline := {x=wx; y=wy; z=wz} :: !current_polyline;

This expression has type point but is here used with type point list

Huh?  The first example worked.  Oh I see, it's operator precedence,
it's assigning the point before doing the concatenation.  Oh but wait,
it worked in the previous example.  I'll try and fix it anyway...

              current_polyline := ({x=wx; y=wy; z=wz} :: !current_polyline);

This expression has type point but is here used with type point list

Huh ???  Isn't that impossible ?  I've triple checked and
current_polyline is always consistently used as a list, and more
importantly a point list...

Any hints ?

Thank You

Brian

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