Project

nendo

0.01
Low commit activity in last 3 years
A long-lived project that still receives updates
Nendo is a programming language written in Ruby.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies
 Project Readme

Nendo

日本語版 / Japanese

Nendo is a dynamic programming language built on top of Ruby environment. It is designed to be a macro language of Ruby. Nendo provides easy access to the whole Ruby environment.

Nendo is a dialect of Lisp. nendo means clay in Japanese. Lisp programming is reminiscent of a clay craft. I hope you will feel like playing with clay when you use Nendo.

Features

  • Scheme-like Syntax: Uses S-expressions to enable true macros that are sealed as forbidden techniques in Ruby
  • Direct Ruby Access: Access Ruby's standard libraries and gems using the dot (.) syntax
  • List Processing Oriented: Powerful for complex data structures and tree manipulation
  • Easy Installation: Pure Ruby implementation - just install the gem

Supported Libraries

SRFIs

Ported from chibi-scheme and Gauche

  • text.html-lite - Simple HTML document construction
  • text.tree - Lazy text construction
  • nendo.test - Unit testing (subset of gauche.test)
  • rfc.json - JSON parsing and construction
  • util.list - Additional list library
  • util.match - Pattern matching (ported from chibi-scheme 0.3)
  • util.combinations - Combination library

Installation

Requirements

  • Ruby 2.3, 2.4, 2.7, 3.0, 3.1, 3.2, 3.3, 3.4
  • JRuby 1.6.2+

Install from RubyGems

gem install nendo

Examples

Hello World

(print (+ "Hello " "World!"))
; => Hello World!

Even numbers filter

(filter
 (lambda (n)
   (= (% n 2) 0))
 '(1 2 3 4 5 6 7 8 9 10))
; => (2 4 6 8 10)

Accessing Ruby libraries

(require "date")
(let1 d (Date.new 0)
  (list (d.strftime "%x")
        (d.strftime "%s")))

Defining macros

(define when (macro form
   `(if ,(car form) (begin ,@(cdr form)))))

For Ruby Users

  • S-expression syntax: Enables true macros and powerful DSL construction
  • List processing: Ideal for complex data structures where object-oriented approaches fall short
  • Seamless Ruby integration: Access the entire Ruby ecosystem

For Lisp Users

  • Vast Ruby library ecosystem: Access all gems and Ruby libraries
  • Cloud deployment ready: Works on Ruby-based PaaS platforms like Heroku
  • Easy installation: Pure Ruby implementation, no complex dependencies

Source Code & Development

Projects Written in Nendo

  • sekka - Japanese input method

Documentation

License

This software is open source, covered by a BSD-style license. Please read accompanying file COPYING.