[Haskell-cafe] Writing an interpreter for a language with mutability
Jeremy Mikkola
jeremy128 at gmail.com
Sun Dec 17 21:03:44 UTC 2017
I am quite certain I am not the first to try to do this, but my google-fu
is failing me today.
How does one go about interpreting a language with mutable objects in
Haskell?
The best approach I can think of is to represent the language's memory as a
`Data.Map.Map RefID LanguageObject` where RefID is some type (probably Int)
used as a reference. The LanguageObject structure might contain some values
of type RefID to refer to other objects. Mutating an object involves simply
replacing the value in the map at a given RefID.
I don't like this approach for two reasons:
1. Map lookups aren't very efficient compared with actual references to the
value.
2. I have to re-invent garbage collection, removing objects from the map
when they no longer have incoming references. (Unlike simple interpreters
for languages with immutable values, I can't rely on Haskell's garbage
collector to do the work for me.)
Is there a better approach?
- Jeremy
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20171217/6745642b/attachment.html>
More information about the Haskell-Cafe
mailing list