((((( Nokolisp )))))

Nokolisp is a variant of the Lisp language created around 1976 by Timo Noko. The first implementation was made, with very little knowledge or experience, in the Nova-1200-like computer which had 16 kilowords of core memory and a paper tape punch for mass storage. The most recent implementation was created in 2000 for the Nokia 9110 cell phone. A version for Linux is reported to be implemented "any day now".

In 1984 Noko was hired by goverment-own company called Nokia. Nokolisp was used to create various programming tools like TNCODE, TNANAL and TNSDL.

When Noko lost his job in Nokia Corporation in 1990, Nokia renamed Nokolisp to "Nykylisp" and totally owned it, and now somebody else claims to be the sole author.

Working Nokolisp Intepreter/Compiler for Msdos is here.

Nokolisp demonstration in Youtube. (*NEW*)

Noko had no knowledge of lambda calculus at the time, but he had rudimentary comprehension of Prolog-like pattern matching and thus the language was formally described as follows:

(defun car ((x . y)) x)
(defun cdr ((x . y)) y)
(defun list x x)
(defun cons (x y) (list x . y))

TimoNoko Github Repository

Addendum: Early History (*NEW*)

Noko had constructed a Forth-like interpreter inspired by Byte-magazine. Then he realized than if he defined the symbol "(" to throw next symbol on to separate stack and ")" symbol to execute it, he would have much nicer code.

He got access to time-shared Interlisp with TTY line editor. He now understood the S-expression. He made his own editor, but screen-based, cause he had a CRT-terminal.

He realized that Nova had CAR/CDR built in. The highest bit in 16bit word causes memory controller itself to make new access in 15-bit address space.

Everything was a mess, until 1979 Byte-Magazine came about. Then he understood everything and implemented garbage-collector and eval. Gödel-Escher-Bach came out 1979 too, insanity was totally the new black!

First compiler was in CP/M-version in 1980. CP/M-version had external dynamic RAM-memory which was 35 bits wide and 64 kilowords long. Hence one address contained one Lisp-node, with 3 bits for node-type. This device was known as S-memory. Some of this stuff was actually documented & published. (Noko T. NokoLisp ja Osborne. Tietokone, No. 2-3, 1983)

Msdos-compiler was better, subrus had two addresses, because compiled parameters were now in cpu stack.

TN-tools in Nokia were automatically compiled into C-code to be run in VAX-computers. Compiled C-code did not have garbage collector, there was separate reclaim-command for discarding used data. If you managed to run your program without ever hearing the BEEP caused by garbage collector, your program was ready for VAXing.