caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* Re: [Caml-list] Polymorphic Variants and Number Parameterized Typ es
@ 2002-04-29 12:55 Krishnaswami, Neel
  2002-04-29 13:28 ` Pascal Cuoq
  2002-04-29 13:33 ` Markus Mottl
  0 siblings, 2 replies; 4+ messages in thread
From: Krishnaswami, Neel @ 2002-04-29 12:55 UTC (permalink / raw)
  To: caml-list

John Max Skaller [mailto:skaller@ozemail.com.au] wrote:
> 
> 
> Hmmm... beginnners question on module system .. can you recurse on it?
> I'm guessing not, since there are neither specialisations nor 
> overloading, there's be no way to stop the recursion. ..??

There's no recursion in the module system because that would break
the termination guarantee. If you think of modules as records, and
functors as lambda abstractions, you can see that the module system
defines a simply-typed lambda calculus. As you've noticed with C++, 
adding recursion to it would mean you can write nonterminating module
expressions. (All this is wonderfully clearly explained in the paper, 
"A modular  module system".)

I can see why having guaranteed termination is nice, though I do
really miss having recursive modules. There are a lot of problems
that decompose more nicely if you have cross-module recursion. 

--
Neel Krishnaswami
neelk@cswcasa.com
-------------------
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] 4+ messages in thread

* Re: [Caml-list] Polymorphic Variants and Number Parameterized Typ es
  2002-04-29 12:55 [Caml-list] Polymorphic Variants and Number Parameterized Typ es Krishnaswami, Neel
@ 2002-04-29 13:28 ` Pascal Cuoq
  2002-04-29 13:33 ` Markus Mottl
  1 sibling, 0 replies; 4+ messages in thread
From: Pascal Cuoq @ 2002-04-29 13:28 UTC (permalink / raw)
  To: caml-list

Neel Krishnaswami wrote:

> There's no recursion in the module system because that would break
> the termination guarantee. If you think of modules as records, and
> functors as lambda abstractions, you can see that the module system
> defines a simply-typed lambda calculus. As you've noticed with C++, 
> adding recursion to it would mean you can write nonterminating module
> expressions. (All this is wonderfully clearly explained in the paper, 
> "A modular  module system".)

I'm not sure about "simply-typed". Did the situation change since
that of http://caml.inria.fr/archives/199907/msg00027.html ?

Pascal
-------------------
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] 4+ messages in thread

* Re: [Caml-list] Polymorphic Variants and Number Parameterized Typ es
  2002-04-29 12:55 [Caml-list] Polymorphic Variants and Number Parameterized Typ es Krishnaswami, Neel
  2002-04-29 13:28 ` Pascal Cuoq
@ 2002-04-29 13:33 ` Markus Mottl
  1 sibling, 0 replies; 4+ messages in thread
From: Markus Mottl @ 2002-04-29 13:33 UTC (permalink / raw)
  To: Krishnaswami, Neel; +Cc: caml-list

On Mon, 29 Apr 2002, Krishnaswami, Neel wrote:
> There's no recursion in the module system because that would break
> the termination guarantee.

We currently don't have this guarantee anyway:

---------------------------------------------------------------------------
module type I =
sig
  module type A
  module F :
    functor(X :
      sig
        module type A = A
        module F : functor(X : A) -> sig end
      end) -> sig end
end

module type J =
sig
  module type A = I
  module F : functor(X : I) -> sig end
end

(* Try to check J <= I *)
module Loop(X : J) = (X : I)
---------------------------------------------------------------------------

> If you think of modules as records, and functors as lambda abstractions,
> you can see that the module system defines a simply-typed lambda
> calculus. As you've noticed with C++, adding recursion to it would
> mean you can write nonterminating module expressions. (All this is
> wonderfully clearly explained in the paper, "A modular module system".)

I'd really like to see Claudio Russo's generalizations of the ML-module
system in OCaml. Especially first class modules would come really handy
to me in some situations. Any news on this front?

Regards,
Markus Mottl

-- 
Markus Mottl                                             markus@oefai.at
Austrian Research Institute
for Artificial Intelligence                  http://www.oefai.at/~markus
-------------------
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] 4+ messages in thread

* Re: [Caml-list] Polymorphic Variants and Number Parameterized Typ es
@ 2002-04-29 13:35 Krishnaswami, Neel
  0 siblings, 0 replies; 4+ messages in thread
From: Krishnaswami, Neel @ 2002-04-29 13:35 UTC (permalink / raw)
  To: caml-list

Pascal Cuoq [mailto:pascal.cuoq@inria.fr] wrote:
> Neel Krishnaswami wrote:
> 
> > There's no recursion in the module system because that would break
> > the termination guarantee. If you think of modules as records, and
> > functors as lambda abstractions, you can see that the module system
> > defines a simply-typed lambda calculus. As you've noticed with C++, 
> > adding recursion to it would mean you can write nonterminating module
> > expressions. (All this is wonderfully clearly explained in 
> > the paper, "A modular  module system".)
> 
> I'm not sure about "simply-typed". Did the situation change since
> that of http://caml.inria.fr/archives/199907/msg00027.html ?

Wow! I didn't even know that was possible. I thought that typechecking
record subtyping was decidable...?

--
Neel Krishnaswami
neelk@cswcasa.com
-------------------
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] 4+ messages in thread

end of thread, other threads:[~2002-04-29 13:36 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-04-29 12:55 [Caml-list] Polymorphic Variants and Number Parameterized Typ es Krishnaswami, Neel
2002-04-29 13:28 ` Pascal Cuoq
2002-04-29 13:33 ` Markus Mottl
2002-04-29 13:35 Krishnaswami, Neel

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