From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by yquem.inria.fr (Postfix) with ESMTP id B27B7BB9C for ; Wed, 16 Nov 2005 00:38:15 +0100 (CET) Received: from rabbit.math.nagoya-u.ac.jp (rabbit.math.nagoya-u.ac.jp [133.6.130.5]) by concorde.inria.fr (8.13.0/8.13.0) with ESMTP id jAFNcEi8011952 for ; Wed, 16 Nov 2005 00:38:15 +0100 Received: from localhost (millas [172.16.30.29]) by rabbit.math.nagoya-u.ac.jp (8.12.11/3.7W) with ESMTP id jAFNc74r009973; Wed, 16 Nov 2005 08:38:07 +0900 (JST) Date: Wed, 16 Nov 2005 08:40:30 +0900 (JST) Message-Id: <20051116.084030.02302710.garrigue@math.nagoya-u.ac.jp> To: swaroop@cs.jhu.edu Cc: caml-list@yquem.inria.fr Subject: Re: [Caml-list] Recursive types From: Jacques Garrigue In-Reply-To: <437A64C1.3000807@cs.jhu.edu> References: <20050506044107.1698.70519.Mailman@yquem.inria.fr> <437A64C1.3000807@cs.jhu.edu> X-Mailer: Mew version 4.0.69 on Emacs 22.0.50 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Miltered: at concorde with ID 437A7166.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Spam: no; 0.00; caml-list:01 recursive:01 recursive:01 combinator:01 unifier:01 checker:01 nodes:01 mutable:01 bug:01 arbitrary:01 functions:01 cyclic:01 jacques:01 jacques:01 loops:02 X-Spam-Checker-Version: SpamAssassin 3.0.3 (2005-04-27) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled version=3.0.3 From: Swaroop Sridhar > How are arbitrary recursive types implemented in caml? Is it done using > an explicit fix point combinator "type" so that the unifier itself does > not go into an infinite loop? No, types are just implemented as (cyclic) graphs. All functions in the type checker have to be careful about not going into infinite loops. There are various techniques for that, either keeping a list/set of visited nodes, or using some mutable fields. A few years ago, infinite loops were a commonly reported bug :-) Jacques Garrigue