[GSoC 2016] Backtrack bug solved
This post is to update about the current status of work in ruby_curry as part of GSoC 2016.
As mentioned in my previous post, I spent the last few days looking into options for the “translator” system and fixing the “backtracking” feature.
With respect to the solving the “backtrack” bug, I had to initially provide support for CHOICE
in the frontend of ruby_curry. There were some issues regarding deep cloning(using Marshal.dump
) while implementing this, which in fact taught me more about simpleton objects in Ruby. After adding support, I decided to test it with a slightly complex permute example. The parsing passed but the output produced by the object code was incorrect due to the backtrack bug.
To solve the bug, I wrote down a simpler simple_choice example. And by using the stack trace and logging features I identified the problem to lie in assigning an unnecessary global variable :P
That solved the problem and I added a corresponding test case for future reference.
Regarding implementation of the “translator” system, I am speculating into using an existing library. More details about this will be updated after discussions with my mentor.
Up next should be new features for ruby_curry like support for where
, loop
and case
clauses, and probably an efficient type system for the compiler.