Vigil comes from Munificent, the principle developer of wren, an unironic language that fills lua's niche (portable c, embeddable, no dependencies), with a nicer syntax: https://github.com/munificent/wren
I believe he is also on the Dart lang team at google. He has a pretty awesome blog and is super insightful when it comes to programming languages. His Github projects inspired me to research language design further.
I made an automatic error fixer once in Powershell. When you load a module, it would catch missing commas between parameters, and update the module file with the missing commas. I want to extend it to catch many more common coding mistakes.
This sounds like the opposite idea, remove the function instead of repairing it. Very aggressive idea.
Replying to braveo's unfortunately dead comment[0]:
> I would be interested in the technique you used to do this. specifically, how did you get your code to kick off and check on module load?
Powershell has great error-handling, and all errors are stored in the special $Error variable. For missing commas, semicolons, brackets, and other punctuation, the errors usually have the line-and-column of the missing item.
So the function would just parse $Error and update the module file with the right item at the right location.
Jokes aside, semantically "implore" and "swear" are actually really good primitives for static analysis. "swear" is only dangerous because there's a chance it gets out of sync with the code it's swearing for.
Check out Eiffel if you want a serious version of pre/post conditions and invariants. Or any number of functional languages where the approach tends to be to use the type system for these type of guarantees instead.
I was actually kind of excited until I started reading the sample code and that it deletes code that has bugs. Of course this coming from the guy who went on a reddit rant about how not having 100% coverage is usually irresponsible.
So this is essentially a creative implementation of the contracts model from Eiffel. I like Racket's implementation a lot, which is coupled with its module system.
Likewise, users ought to be punished for making mistakes as well. If someone has a typo in a command on the cli, delete a random file from their home dir.
An early computer-based Nomic game (which I've forgotten the name of) had its proposals in the form of patches to the PHP for the game website. The way they handled buggy submitted code was to excise offending blocks of code until it ran again.
Because those don't delete the offending code which must be punished.
Also, implore specifies the caller is offensive, and any function which swears a falsehood is offensive. The latter is like assert, but the former is like lifting the assert to the caller.
[+] [-] endgame|8 years ago|reply
https://twitter.com/bos31337/status/116372971509121025
> The best ghc bug ever involved a dev version of the compiler deleting your source file if it contained a type error.
https://git.haskell.org/ghc.git/commitdiff/434ef2b14b37df405...
[+] [-] mwkaufma|8 years ago|reply
[+] [-] altotrees|8 years ago|reply
[+] [-] shakna|8 years ago|reply
[0] http://wren.io/concurrency.html
[+] [-] stephengillie|8 years ago|reply
This sounds like the opposite idea, remove the function instead of repairing it. Very aggressive idea.
[+] [-] stephengillie|8 years ago|reply
> I would be interested in the technique you used to do this. specifically, how did you get your code to kick off and check on module load?
Powershell has great error-handling, and all errors are stored in the special $Error variable. For missing commas, semicolons, brackets, and other punctuation, the errors usually have the line-and-column of the missing item.
So the function would just parse $Error and update the module file with the right item at the right location.
[0] https://news.ycombinator.com/item?id=15212428
[+] [-] aetherson|8 years ago|reply
[+] [-] braveo|8 years ago|reply
[+] [-] first_amendment|8 years ago|reply
[+] [-] vidarh|8 years ago|reply
[+] [-] nickpsecurity|8 years ago|reply
[+] [-] sillysaurus3|8 years ago|reply
Aw, Terry's YouTube channel was taken down. He did so many walkthroughs of HolyC and his dynamic programming engine.
Oh well, 353 videos were archived at least.
Thank goodness for archive.org!
https://archive.org/details/TerryADavisTempleOSYouTubeChanne...
HolyC: https://archive.org/download/TerryADavisTempleOSYouTubeChann...
Flight simulator: https://ia801506.us.archive.org/2/items/TerryADavisTempleOSY...
[+] [-] JetSpiegel|8 years ago|reply
There's a proposition to not only delete the code but commit and push the git repo its a part of.
[+] [-] chris_wot|8 years ago|reply
[+] [-] tasty_freeze|8 years ago|reply
[+] [-] Retra|8 years ago|reply
[+] [-] catnaroek|8 years ago|reply
[+] [-] ComodoHacker|8 years ago|reply
It's not obvious who's to blame here, the caller or the callee.
[+] [-] gunnihinn|8 years ago|reply
[+] [-] Roshie5u|8 years ago|reply
[+] [-] INTPnerd|8 years ago|reply
[+] [-] carlmr|8 years ago|reply
Well, that's because it is irresponsible.
[+] [-] steinuil|8 years ago|reply
[+] [-] unkown-unknowns|8 years ago|reply
[+] [-] 482794793792894|8 years ago|reply
[+] [-] crehn|8 years ago|reply
[+] [-] kmill|8 years ago|reply
[+] [-] hliyan|8 years ago|reply
[+] [-] kmill|8 years ago|reply
Also, implore specifies the caller is offensive, and any function which swears a falsehood is offensive. The latter is like assert, but the former is like lifting the assert to the caller.
[+] [-] first_amendment|8 years ago|reply
[+] [-] bitL|8 years ago|reply
Referential self-punishment. Self-removing code during runtime based on a predestined moral functor.
[+] [-] staticautomatic|8 years ago|reply