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