Replies: 2 comments 4 replies
-
To my knowledge ( which is incomplete and may be wrong ), I think you could do something along those lines. I think it'd be possible to experiment with without modifying HVM by using it as a library and writing Rust function implementations for things like I'm not sure if that should be built-in to HVM, though, or if it should be added to a more specific HVM runtime, maybe something along the lines of #219. Since, to use HVM as a useful programming environment, we're going to need a collection of good bindings to things like file/network IO, etc., maybe a reflection API ( if you could call it that ), would live in that kind of a project, instead of in the |
Beta Was this translation helpful? Give feedback.
-
More generally it would be nice if rules were not "special" but first-class objects. Somehow an evaluation seems more the joining of a term and a context which give meaning to its constructors (and free variables). It seems to me that even DUP nodes are not really floating around but associated to the current evaluation context. One could imagine to be able to reify the context and manipulate it. I wonder if one could bridge the interaction calculus picture with considerations related to the computational interpretation of sequent calculus (see e.g. Wadler, Philip. ‘Call-by-Value Is Dual to Call-by-Name’,) |
Beta Was this translation helpful? Give feedback.
-
I was interested in learning more about HVM by extending it with some functionalities to make it more amenable to be directly programmed in the style of interacting Lisp systems. I know that HVM is meant to be a compilation target, but it seems also quite interesting as a general programming platform (see recent discussion on HOP by @zicklag, for example). A thing I had in mind was to expose some internals, like the possibility to add rules at runtime or to create new terms programmatically: this would be the equivalent of quote/unquote. The can be a family of constructors which describe a general term or a rule of the language and a function which converts these representations into terms which can then be reduced. For example something like:
Would be also nice to be able to reify terms into representations which can then be manipulated by programs. E.g. write a REPL directly in HVM.
Does it makes sense or I'm overlooking some fundamental problem?
Beta Was this translation helpful? Give feedback.
All reactions