chickenclisp 0.1.8
A scheme like programming language and interpreter
To use this package, run the following command in your project's root directory:
Manual usage
Put the following dependency into your project's dependences section:
ChickenClisp
A minimal implementation of Orelang in D.
This program was translated from Orelang_TS
ChickenClisp means an interpreter of extended Orelang and the language itself.
ChickenClisp is just like a Scheme like Lisp.
What's Orelang?
Orelang is simple and minimal programming language declared at the articleプログラミング言語を作る。１時間で
Features
This is an implementation of Orelang and provides more functions
 if/cond expression
 compare functions: >,>=,<,<=
 logics : and(&&), or(), not(!)
 function definition
 Function/Operator is firstclass object
 Lambda Expression (lambda keyword)
 Closure
 List support(and utilities like car, cdr)
This language aims an original scheme like lisp.
Specification of Orelang
This is not an original specification original is can be found at the article.
Grammer
Orelang provide only one grammer.
Expr := (operator args1 args2...) < this is CallOperator
Expr := value < this is ImmediateValue
This looks like lisp.
Sample codes
Some sample code can be found at samples/ and sample.d is sample code runner, you can see sample codes have only to run it, but I'll show you some sample codes of ChickenClisp here.
Sum 1 to 10
Procedural impl:
(step
(set i 0)
(set sum 0)
(while (<= i 10)
(step
(set sum (+ i sum))
(set i (+ i 1))))
(println "sum 1 to 10 : " sum))
Functional(use high order function)
; seq(n) creates a sequence of '(0 1 2 ... n)
(println (fold + 0 (seq 11)))
Square 1 to 10 with high order function  map(/foreach)
(println (map (lambda (x) (* x x)) (cdr (seq 11))))
You can define an function to square:
(def square (x) (* x x))
(println (map square (cdr (seq 11))))
As you can see, Function is a firstclass Object in ChickenClisp!.
Fibonacci
(def fib (n)
(step
(if (= n 0) 0
(if (= n 1) 1
(+ (fib ( n 1)) (fib ( n 2)))))))
or:
(def fib (n)
(step
(def fibiter (n a b)
(if (= n 0)
a
(fibiter ( n 1) b (+ a b))))
(fibiter n 0 1)))
then:
(println (map fib (seq 10)))
More sample codes
More sample codes are wrote in sample.d
.
Installation
Requirements
 dmd(v2.070 or later)
 dub(1.0.0 or later)
Commands
$ git clone https://github.com/alphaKAI/ChickenClisp
$ cd ChickenClisp
$ dub build
$ ./chickenclisp
License
ChickenClisp is released under the MIT License.
Please see LICENSE
file for details.
Copyright (C) 2016 Akihiro Shoji
 0.1.8 released 8 years ago
 alphaKAI/chickenclisp
 MIT
 Copyright (C) 2016, Akihiro Shoji
 Authors:
 Dependencies:
 none
 Versions:

0.1.8 2016Nov20 0.1.7 2016Nov18 0.1.6 2016Nov18 0.1.5 2016Nov17 0.1.4 2016Nov17  Download Stats:


0 downloads today

0 downloads this week

0 downloads this month

81 downloads total

 Score:
 0.5
 Short URL:
 chickenclisp.dub.pm