From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@sympa.inria.fr Delivered-To: caml-list@sympa.inria.fr Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id 38CB87EF0D for ; Thu, 11 Feb 2016 15:28:44 +0100 (CET) IronPort-PHdr: 9a23:XFkWwRcGrPB8uWp4yucbiYnJlGMj4u6mDksu8pMizoh2WeGdxc6yYB7h7PlgxGXEQZ/co6odzbGG7Oa7BSdeuN6oizMrTt9lb1c9k8IYnggtUoauKHbQC7rUVRE8B9lIT1R//nu2YgB/Ecf6YEDO8DXptWZBUiv2OQc9HOnpAIma153xjLDtvcaPKFsRzBOGIppMbzyO5T3LsccXhYYwYo0Q8TDu5kVyRuJN2GlzLkiSlRuvru25/Zpk7jgC86l5r50IeezAcq85Vb1VCig9eyBwvZWz9EqLcQza3nsdVmQOihcAPQXP4QuyCo/xsy/7rvJwnjeXN8DsZb8xUDWmqaxsTUm7pj0AMmsF8GbSg9c4tq9VoQnp8wB/xIvde8ePOfR/ZYvSeNobQSxKWcMHBH8JOZ+1c4ZaV7lJBu1ftYSo4gJW9RY= Authentication-Results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=refis.thomas@gmail.com; spf=Pass smtp.mailfrom=refis.thomas@gmail.com; spf=None smtp.helo=postmaster@mail-wm0-f47.google.com Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of refis.thomas@gmail.com) identity=pra; client-ip=74.125.82.47; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="refis.thomas@gmail.com"; x-sender="refis.thomas@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of refis.thomas@gmail.com designates 74.125.82.47 as permitted sender) identity=mailfrom; client-ip=74.125.82.47; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="refis.thomas@gmail.com"; x-sender="refis.thomas@gmail.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@mail-wm0-f47.google.com) identity=helo; client-ip=74.125.82.47; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="refis.thomas@gmail.com"; x-sender="postmaster@mail-wm0-f47.google.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0D/AQA8mrxWkS9SfUpeg1g0Xg8GiFWfMJF1ggiHFwc5EwEBAQEBAQEBEAEBAQEHCwsJHzCCLYIVAQEEEhEdARsdAQMMAQUFCw8CJgICIQEBEQEFARwGEyKHYgEDEg6kO4ExPjGLNIFpgleFAQoZJw1Rg3MBAQgCGAEBBAoEbYMUggOENoI3gUGDOoE6AQSNJ4VHhAmBOoQUhhKBc451RIY6hgQRHoENIgNygzA8LocjgTABAQE X-IPAS-Result: A0D/AQA8mrxWkS9SfUpeg1g0Xg8GiFWfMJF1ggiHFwc5EwEBAQEBAQEBEAEBAQEHCwsJHzCCLYIVAQEEEhEdARsdAQMMAQUFCw8CJgICIQEBEQEFARwGEyKHYgEDEg6kO4ExPjGLNIFpgleFAQoZJw1Rg3MBAQgCGAEBBAoEbYMUggOENoI3gUGDOoE6AQSNJ4VHhAmBOoQUhhKBc451RIY6hgQRHoENIgNygzA8LocjgTABAQE X-IronPort-AV: E=Sophos;i="5.22,431,1449529200"; d="scan'208";a="202660348" Received: from mail-wm0-f47.google.com ([74.125.82.47]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/AES128-GCM-SHA256; 11 Feb 2016 15:28:43 +0100 Received: by mail-wm0-f47.google.com with SMTP id 128so23535356wmz.1 for ; Thu, 11 Feb 2016 06:28:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=ZW2xdFql5etnkoieVab6SgoBf7s+/bUQzo3yLYQaCL8=; b=1GsJWuJFvphXSgpNyhJfJyvJon3m4ZVczn6LkVYLZErS1daE9GMKf5/0oPY9mguh4X p5gFRklzhpBGiRuglalddLZzneg0L0dMbRnAGkAXmeSJZRLUsRDJOjxxF1PgGugClscZ B24JfeY548nKgRiddJhyERqCr3Ub23eq4tNid+kiSPEFebu7owlSj7Lyvi++L/Gn/Mcl K2FeGR3Q/FDkZSIfF973gG89UVoulSIkREaJ+zEdVzw66K4wtbZt+XXELwvYEqVs/bAa u1U68dwmVbCfzGgLRSL3k1Z5xMO8WHHCa2qNB0Ldk9rmrKCCT7U6+ZAP/gRreomhHXgC MdqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:sender:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=ZW2xdFql5etnkoieVab6SgoBf7s+/bUQzo3yLYQaCL8=; b=d0ix3qstuVrSAdt288eqzVep74q0M4PXIYrWRPj1NMda1mXeaDYwAegZdqHhhKsBEA LyXVY4FjzVUR2H3aWOjC4I3Pn97Hu52QF4r0a+QTeRSPcjmgkHhvaJQEH31Nx/P0LyuM ap80VT1AJjTfRduILrXmbT8HncqS+97yguSOjqMhOISg9g6trdZsFi7fXcg0Pm8uoqR4 WZ7e5NqZS+V35YKNhojBiTgAsMma1ii71rGyaWDKTReuHlpRzJ3768y0m39IPMq405FO RiLScbBYTjDcVjM6fUfXRio6Mcbi7FSzTmreFgZZI81XXUaL+mQzykP6EMHoDW9RpmyK nyBw== X-Gm-Message-State: AG10YOQAnXqXJdm9FH6Pmv2Cck3QM8ZvnfFNhcszVyJiujAoJXJmMHoBU6Z+9C1J8wmqR0vQgIsnrYbIzV4ivg== MIME-Version: 1.0 X-Received: by 10.194.192.198 with SMTP id hi6mr46630989wjc.141.1455200923396; Thu, 11 Feb 2016 06:28:43 -0800 (PST) Sender: refis.thomas@gmail.com Received: by 10.27.229.194 with HTTP; Thu, 11 Feb 2016 06:28:43 -0800 (PST) In-Reply-To: References: Date: Thu, 11 Feb 2016 14:28:43 +0000 X-Google-Sender-Auth: yzBSbfZ15SRe5bmvIE_8tOcnD5Q Message-ID: From: Thomas Refis To: Philippe Veber Cc: caml users Content-Type: text/plain; charset=UTF-8 X-Validation-by: thomas.refis@gmail.com Subject: Re: [Caml-list] Accessing values calculated by Toploop.execute_phrase 2016-02-11 14:11 GMT+00:00 Philippe Veber : > I'm having quite some fun interacting with the toplevel using `Toploop` > and co., and I am now looking for a way to get the values created during a > call to `Toploop.execute_phrase`, which sadly only returns a boolean. I > would like to get these values as `Obj.t` values, so that I could perform > additional computations for certain types. > > I'm almost there but not yet: > - I can find which values were created and what's their type by collecting > `Outcometree.out_path` values when they are printed, but this doesn't give > access to the actual value (represented as an `Obj.t`). > - I could use `Toploop.getvalue`, but then I could not get results of > evaluations that were not bound to a variable. Well, you can hack around the final problem by rewriting the expression you feed to [execute_phrase] so the result is always bound to a variable. [Toploop.execute_phrase] already has a bit of code to check whether the result is a value not bound to any name ( https://github.com/ocaml/ocaml/blob/trunk/toplevel/toploop.ml#L263 ), you could do something similar on your side. This works on the typedtree but you can do the same on the parsetree. Or you could type your expression beforehand, reuse that exact piece of code, but only when the value is of the type you want (since you apparently want to do extra computations "for certain types"). Thomas. PS: https://www.youtube.com/watch?v=p8oi6M4z_e0