Preskoči na glavno vsebino

Objave

Prikaz objav, dodanih na januar, 2022

Interactive display of Rye's data

As part of making Rye REPL more exploration friendly I started working on an interactive Rye value display -er. Below is simple first demo with a Block. It tries not to just display the block, but let you interact with it and return the value of selected item back to the REPL. I don't have a full picture about this yet, but I think if done well, it could enable some interesting workflows. Think about a full programming language, a REPL and something a little akin to Excel? The same will be done for other Rye structures, like Dicts, Lists, Contexts and Spreadsheets.   BTW: a goal of Rye is to be human-friendly, so Rye REPL, while sounding more Lisp-y will from now on simply be called Rye console . And the Spreadsheet , A R-lang data-frame inspired Rye structure will for brevity be renamed to Table . I am also adding a set of functions around now Table . Not the same, but in the past, I already integrated Go-lang's QFrame (think Python Pandas dataframe) library to Rye, and also

Idea from out there ... scope/context as graph?

Just an idea I got last week and haven't yet been able to overthrow it yet. Potential benefits are also yet to be explored ... When programming, our scopes (namespaces, contexts ...) are basically key-value stores. They translate names to values.  What if scopes could also store relations between values? If context would also be a graph?  Would this improve on how we solve some problems, or write some algorithms? I haven't really explored it yet, below I tried to get some sense of how Rye code in this case could look like at all. Do you have any ideas? The solidification of Rye core continues ... you can follow it on Github :)

Making things more solid

There's time for exploring, trying out ideas, rapid experimental growth and garbage collection ... that was the majority of my time with Rye so far. But a time for solidifying what worked, making all the dull tasks, unifying error messages, type checks, cleaning out build dependencies is also needed. If product should eventually become a product, not just exploration of ideas. I am currently in this time. In big part thanks to @otobrglez , who wants to tinker with Rye a little, make a FizzBuzz example, etc ... :) At the end of it, Rye should be easy to build by anybody interested and should be relatively easy to start exploring and tinkering with. At least core functions should provide consistent error messages and docstrings. I already cleaned up repository somewhat and setup a tiny build with minimal dependencies. There are new instructions on Readme page. I am now solidifying core functions in builtins.go and improving runtime and syntax (loader) error reporting. Also improvin

The factorial bunch

I was updating the github readme page and I added a number of factorial examples. Here is me testing them in Rye REPL. For more, visit: https://github.com/refaktor/rye , you will find this code near the top of the README. Otherwise, "smarter" and shorter code is not always better code. I am not making a statement about which version of factorial function here is better. But factorial is very known simple problem and as such it's good way to quickly show some specific features of Rye. You won't understand those features from this short demo, and they might seem weird or complex, but you will know something is there and if you want to dig deeper you might see they are consistent and make sense in the bigger scheme ... I hope :)

Code cleanup and minimal build

A friend @otobrglez made me aware, that my constant experiments made the code base pretty much un-compilable for everyone else, because of all the dependencies I play with. So I went into clean-up mode. I created two branches on github, main and devel. I will try to keep main branch relatively stabile and easy to compile and do all development and experiments in devel branch from now on. Go projects otherwise are very simple to compile, there are no build scripts or complex configurations. Flags determine the variation or additional functionalities (and at the same time dependencies) that you are building into executable. More on that soon. "b_tiny" is more or less the minimal rye. It has only 4 simple dependencies now after cleanup, and will probably only require 2 when I am done. Here is the full procedure to build tiny Rye executable on a linux system, even if you don't even have golang already installed: https://github.com/refaktor/rye/blob/main/fresh-build.md