I think this would satisfy your objections: hopefully the core semantics are so small that writing a JavaScript version from them wouldn't be so scary.
I should try that as soon as possible. Simon Peyton-Jones has said multiple times that defining a core intermediate-language for Haskell was very important as it meant they wouldn't add things that didn't make complete sense. Working on Roy doesn't give such a strong sense.
My worry about separating the semantics out into an IR is that we might lose information that makes outputting readable JavaScript possible. But we'll never know until I try.
Ah :)
On my TODO list is to create an intermediate representation to more easily reason about Roy's semantics:
https://github.com/pufuwozu/roy/issues/41
I think this would satisfy your objections: hopefully the core semantics are so small that writing a JavaScript version from them wouldn't be so scary.
I should try that as soon as possible. Simon Peyton-Jones has said multiple times that defining a core intermediate-language for Haskell was very important as it meant they wouldn't add things that didn't make complete sense. Working on Roy doesn't give such a strong sense.
My worry about separating the semantics out into an IR is that we might lose information that makes outputting readable JavaScript possible. But we'll never know until I try.
> Will you commit to implementing Roy in Roy?
Would really like to - or at least some modules:
https://github.com/pufuwozu/roy/issues/1
> Will Roy offer a subset or a superset of the type system of the metalanguage (JavaScript)?
Mostly a superset of JavaScript.
> Exhaustive case analysis and polymorphic variants?
Not yet.
> Will you be able to implement the type-checker correctly and safely in JavaScript?
With enough tests I'll have some confidence in it. I don't have enough tests. ;)
> Will your users ever be able to compile their pure Roy code into another functional language?
Probably not - at least not written by me since that's not what I designed it for. But no objections if someone does it. :)
Hopefully some core semantics will make it possible for someone to do that.