caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Matthias Puech <puech@pps.univ-paris-diderot.fr>
To: caml-list@inria.fr
Subject: Re: [Caml-list] how to convert strings to Ocaml values at run-time?
Date: Mon, 24 Feb 2014 14:48:32 +0100	[thread overview]
Message-ID: <530B4DB0.4040203@pps.univ-paris-diderot.fr> (raw)
In-Reply-To: <530A590B.2040004@gmail.com>

Hi,
I am not sure if I understand your question correctly, but I guess you 
could:
- lex/parse the string to an untyped type of AST [term] as usual, and then
- have the type checking function take a [term] and produce an AST 
annotated with types ['a typed_term]. This type could be either:
     - a GADT, in which case you would need an evaluation function [eval 
: type a. a typed_term -> a], by recursion on the typed term
     - or, à la Finally Tagless [1], an abstract type declared in a 
module together with values implementing the various primitives.

The thing to remember here I think is to "box" the type ['a] of the 
expression parsed into a type annotation, i.e., ['a typed_term]. 
However, I fear it is going to be difficult to extend this approach to 
polymorphism.

Hope it helps,
     -m

[1]: http://okmij.org/ftp/tagless-final/#tagless-final

On 02/23/2014 09:24 PM, Matej Kosik wrote:
> On 23/02/14 13:12, Tianyi Cui wrote:
>> If you know the type of this string in advance, you can do so with ocaml_plugin: https://github.com/janestreet/ocaml_plugin
> Hm, imagine that the expected type is:
>
> 	'a * 'a -> bool
>
> Now, if user provides a string, say:
>
> 	"fun (a,b) -> a = b"
>
> how can I convert that string to Ocaml value of the above type (like how toplevel does it)?
>
> Is this something ocaml_plugin is able to do for me? I've failed to figure out the trick.
>


      parent reply	other threads:[~2014-02-24 13:48 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-23 12:23 Matej Kosik
2014-02-23 13:12 ` Tianyi Cui
2014-02-23 20:24   ` Matej Kosik
2014-02-24  1:30     ` Francois Berenger
2014-02-24  5:05     ` Tianyi Cui
2014-02-24 13:48     ` Matthias Puech [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=530B4DB0.4040203@pps.univ-paris-diderot.fr \
    --to=puech@pps.univ-paris-diderot.fr \
    --cc=caml-list@inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).