I play with nim (at the time of writing it was also called nimrod), writing a Brainfuck interpreter in this language. Without implemented loops, I have:
import os, unsigned const RamSize = 200 type TRam = array[0..RamSize, int] var ram : TRam ip : int = 0 dp : int = 0 proc readCode(path: string) = var f : TFile = open(path) i : int = 0 while i < RamSize and not EndOfFile(f): ram[i] = ord(readChar(f)) inc(i) proc main(path: string) = readCode(path) while ip < RamSize: case chr(ram[ip]) of '>' : inc dp of '<' : dec dp of '+' : inc ram[dp] of '-' : dec ram[dp] of '.' : write stdout, chr(ram[dp]) else : nil inc(ip) echo() if paramcount() == 1: main(paramstr(1)) else: echo("usage: bfrun PATH")
It compiles successfully, but when I add input to it, for example:
> +++++ +++++ +++++ +++++ +++++ +++++ +++++ +++++ +++++ +++++ +++++ +++++ +++++ .
Which should print the character "A", it returns "N." Any ideas?
Taylor skidmore
source share