Nimrod для начинающих - Fizzbuzz - Компиляция и запуск

Я попытался написать, скомпилировать и запустить свою первую программу нимрода - fizzbuzz.

Nimrod устанавливается из git и имеет версию.

[sayth nimrod]$  nimrod --version
Nimrod Compiler Version 0.9.4 (2014-04-28) [Linux: amd64]
Copyright (c) 2006-2014 by Andreas Rumpf

Итак, вот шипение

proc fizzBuzz(x, y: int) =
        for i in x .. y:
                if i mod 15 == 0:
                        echo("FizzBuzz")
                elif i mod 3 == 0:
                        echo("Fizz")
                elif i mod 5 == 0:
                        echo("Buzz")
                else:
                        echo(i)

Я скомпилировал в c (есть ли лучший вариант?), и мне показалось, что все в порядке.

[sayth nimrod]$  nimrod c fizzbuzz.nim 
config/nimrod.cfg(37, 2) Hint: added path: '/home/sayth/.babel/pkgs/' [Path]
Hint: used config file '/home/sayth/Nimrod/config/nimrod.cfg' [Conf]
Hint: system [Processing]
Hint: fizzbuzz [Processing]
fizzbuzz.nim(1, 5) Hint: 'fizzbuzz.fizzBuzz(x: int, y: int)' is declared but not used [XDeclaredButNotUsed]
gcc -c  -w  -I/home/sayth/Nimrod/lib -o /home/sayth/Scripts/nimrod/nimcache/fizzbuzz.o /home/sayth/Scripts/nimrod/nimcache/fizzbuzz.c 
gcc -c  -w  -I/home/sayth/Nimrod/lib -o /home/sayth/Scripts/nimrod/nimcache/stdlib_system.o /home/sayth/Scripts/nimrod/nimcache/stdlib_system.c 
gcc   -o /home/sayth/Scripts/nimrod/fizzbuzz  /home/sayth/Scripts/nimrod/nimcache/stdlib_system.o /home/sayth/Scripts/nimrod/nimcache/fizzbuzz.o  -ldl
Hint: operation successful (8181 lines compiled; 1.065 sec total; 13.138MB) [SuccessX]

Но его запуск не дает никакого результата. Есть ли что-то, что я делаю неправильно?

[sayth nimrod]$  ./fizzbuzz
[sayth nimrod]$ 

person sayth    schedule 27.04.2014    source источник


Ответы (1)


Вы просто забыли позвонить. Обратите внимание на подсказку компилятора:

fizzbuzz.nim(1, 5) Hint: 'fizzbuzz.fizzBuzz(x: int, y: int)' is declared but not used [XDeclaredButNotUsed]

И нет, ваш лучший вариант — это компиляция в C. Возможно, в будущем появится бэкенд LLVM, но общее мнение таково, что это больше проблем, чем пользы. Промежуточный вывод C является более переносимым (gcc работает на гораздо большем количестве платформ, чем LLVM), и вы можете выбрать компилятор, который лучше всего оптимизирует ваш код.

person ReneSac    schedule 28.04.2014