Ioke = LanguageExperiment with(
  goal: :expressiveness,
  data: as(code),
  code: as(data),
  features: [
  runtimes: (JVM, CLR),
  inspirations: set(Io, Smalltalk, Ruby, Lisp)

hello = method(name,
  "hello, #{name}!" println)

Ioke inspirations select(
  features include?(:object_oriented)
) each(x, hello(x name))

Ioke is a folding language. It allows you to write highly expressive code that writes code. Ioke allows you to create abstractions at any level, and expressiveness is the ultimate goal of the language.

Ioke is a dynamic language targeted at virtual machines, currently the Java Virtual Machine and the Common Language Runtime. It's been designed from scratch to be a highly flexible general purpose language. It is a prototype-based programming language that is inspired by Io, Smalltalk, Lisp and Ruby.

Ioke is hosted at Kenai. This is where bugs are reported, mailing lists are joined, and the source code can be found. The link to the project at Kenai can be found in the left hand menu.

The current version of Ioke is P, with ikj 0.4.0 for the JVM and ikc 0.4.0 for the CLR. That means that Ioke is not production ready. Ioke P is the fourth release and is geared towards making something available that people can use. This site will currently only contain links to other places, reference documentation and most importantly - a guide to the language. That guide should contain everything I know about the language, so with these resources it should be quite easy to get started.

Ioke is a language I designed for myself. That means that some design choices might not match what you would expect. Ioke is a language that makes sense to me. If it makes sense to you too, great! But be warned that I have made several decisions that doesn't necessarily match what most general purpose languages choose to do.

More information about the rationale and ideas behind Ioke - and also information about the development process - can be found in my blog, at

Ola Bini