Hacker News new | past | comments | ask | show | jobs | submit login
Ioke is a folding language (ioke.org)
58 points by brudgers on June 23, 2015 | hide | past | favorite | 15 comments



I don't know what "folding" is supposed to mean in this context and it's not defined elsewhere on the page. Is there a common usage of the term when describing a programming language that I'm not familiar with? I first thought of a functional fold but that doesn't appear to be the intended meaning here.


He talks about it in a blog post [1] and uses Steve Yegge's definition [2] of "code that writes code that writes code". Ioke is homoiconic and seems to contain fexprs (functions which allow you to pass it unevaluated code to be evaluated (or not) later, thus capturing dynamic scope), like Io, and unlike most modern lisps.

[1] https://olabini.com/blog/2009/01/a-folding-language/ [2] http://steve-yegge.blogspot.com/2006/07/wizard-school.html


Here is the definition the creator has.

https://ioke.org/wiki/index.php/Guide#Introduction

I imagine they are trying to create something that could take the roles of both low-level and high-level, like C++ and Lua in a gaming engine.


From wikipedia:

In functional programming, fold – also known variously as reduce, accumulate, aggregate, compress, or inject – refers to a family of higher-order functions that analyze a recursive data structure and through use of a given combining operation, recombine the results of recursively processing its constituent parts, building up a return value. Typically, a fold is presented with a combining function, a top node of a data structure, and possibly some default values to be used under certain conditions. The fold then proceeds to combine elements of the data structure's hierarchy, using the function in a systematic way.


I was trying to help out those asking about what Fold is. I guess it doesn't show well if the Wikipedia explanation is confusing!


The definition of folding in Wikipedia is not relevant to Ola Bini's usage of the term.


Thanks. I misunderstood both of them.


I don't get it. The page mentions what goals ioke is trying to achieve, but then offers no meaningful demonstration whatsoever of the language's compelling features. I'm left with the impression that "it's good because I say so."

I'm really intrigued, but I don't even know what I'm looking at. The language guide didn't help either.


I haven't looked at it recently, but a couple of years ago, the idea seemed to be (explicitly) "I'm willing to give up run time to reduce program length and coding time", but (implicitly) without straying far from Ruby+IO.

The "what's different" examples back at the time showed a few Ioke programs that were half the length of the equivalent Java and Ruby ones and running at 5 times as slow; Coming from an APL/K/J background, I was unimpressed by this tradeoff.

Have no idea if things are different with Ioke today, and not enough time to look at it again right now, sadly.



The name is due to Steve Dekorte's http://iolanguage.org/


Ola kind of ran out of time--as stated back when it started, it was an experiment. I was pretty excited by its expressiveness.


A podcast interview with Ola Bini discussing Ioke:

http://www.se-radio.net/2010/01/episode-154-ola-bini-on-ioke...


Oh, work by Ola Bini, I remember him for his contributions to JRuby. Interesting experiment.


Circa 2010




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: