I have been considering the creation of a julia based golfing language.
Proposed name: Jules
.
In implementation it would effectively resolve every program into a julia AST,
which would run inside julia.
One feature I was considering was name-fallback.
Where if a variable/function name was not defined, it would do a search of the names that are defined, and choose the one that was closest.
eg prin("foo")
would resolve into a call the julia print("foo")
function.
And then additional fallbacks if that method threw an error.
This would mean that the behavior of Jules
,
would be defined by the version of the julia standard library it is backing onto. Not particularly problematic -- just up the Jules
version number each time the julia version number is upped.
When it gets more problematic,
is when combined with an another feature I think would be nice to have.
A huge standard library.
As the standard library, I was thinking, the entire julia package ecosystem.
And having the module loading function be something like
use Foo
which resolves into using Foo
to attempt to load the module Foo
from currently installed packages, but if that fails, then to runPkg.add("Foo"); using Foo
, to download and install the latest registered `Foo.jl" package.
Now this would mean the behavior of the language would potentially change each time a new version of any registered package is released.
Since it could add a new function name, changing how name-fallback resolves.
So a new version of Jules
would be created every time,
a commit is made to METADATA.jl.
This would mean about 10 new versions of Jules
would come out each day.
A Jules
version number, would be something like:
v<jules_language_version>-<julia_language_version>-<SHA_hash of MetaData.jl
eg v0.1.0-0.5.2-d776b19
With over 10 new versions per day,
many questions will not be win-able with the latest version of Jules
.
See:Can I win with a version of a language that didn't exist when the challenge was posted?
My current proposed solution would be to have a script that will install the latest version of Jules
, from before a given date and time.
And tell you the version number.
So you could copy and paste the time from the question, to get a copy of the language that is legal for competing.
Does this sound reasonable?