nim-wiki/Unofficial-FAQ.md

61 lines
3.4 KiB
Markdown
Raw Normal View History

2013-12-07 15:42:55 +00:00
If you are looking for the official FAQ then you can find it [here](http://nimrod-lang.org/question.html)
2013-04-05 16:23:33 +00:00
2013-12-07 15:42:55 +00:00
# How can I help?
2010-09-14 10:11:18 +00:00
2011-11-09 00:46:57 +00:00
For beginners I suggest to implement missing parts of the standard library or some other more specialized libraries:
2010-09-14 10:11:18 +00:00
* locale support
* bignums
* a lean GUI library
2011-11-09 00:46:57 +00:00
* libraries for scientific computing
2011-12-31 06:48:02 +00:00
* libraries that deal with multi-media
2011-11-09 00:46:57 +00:00
* etc.
2010-09-14 10:11:18 +00:00
2013-12-07 15:42:55 +00:00
# How does the Nimrod compiler's versioning scheme work?
Versions with a trailing odd number are considered to be "in-development", these are unstable "bleeding-edge" versions of the compiler which you can get from Github. Versions with an even number are releases. E.g. 0.9.0 is a release version, 0.9.1 is an in-development version.
2013-12-07 15:42:55 +00:00
# Will Nimrod have block comments?
2010-09-14 10:11:18 +00:00
Most probably not. Reasons for avoiding them are:
* If proper block comments exist, they should be nestable. This means you cannot tokenize Nimrod with regular expressions anymore.
* The editor can be used to put "#" in front of every line.
* "when false" is not a bad solution. At least syntax is still checked for deactivated code.
* discard """ """" is another solution.
2013-12-07 15:42:55 +00:00
# Why is it case/style insensitive?
2010-09-14 10:11:18 +00:00
2011-12-30 18:59:04 +00:00
* Identifiers which only differ in case are bad style. If the programming language treats them the same the programmer needs to come up with different names for different things.
2010-09-14 10:11:18 +00:00
* Case insensitivity is widely considered to be more user friendly. This holds for file systems, configuration files, and programming languages.
2011-12-30 18:59:04 +00:00
* Many programming languages are case insensitive: Lisp, Basic, Pascal, Ada, Eiffel, Fortran. Since software for aircrafts and power plants has been written in Ada, it seems reasonable to assume that case insensitivity will not destroy civilisation.
* Note that most people confuse case sensitivity with case consistency (which is indeed good style). However, case consistency is easier to achieve with case insensitivity and a properly configured IDE than with case sensitivity.
2013-12-07 15:42:55 +00:00
# Where can I find code examples?
2013-12-07 15:42:55 +00:00
You can find examples in the [examples/](https://github.com/Araq/Nimrod/tree/master/examples) directory. There are also many other examples available on [Rosetta Code](http://rosettacode.org/wiki/Nimrod).
2013-12-07 15:41:42 +00:00
2013-12-07 15:42:55 +00:00
# Why are unsigned types discouraged?
2013-12-07 15:41:42 +00:00
2014-01-04 16:16:08 +00:00
* http://critical.eschertech.com/2010/04/07/danger-unsigned-types-used-here/
2014-03-02 13:39:29 +00:00
* http://forum.nimrod-lang.org/t/313#1631
# Why are tabs forbidden?
Tabs are treated differently by different tools and editors. Because indentation is so important in Nimrod it is much simpler to outright forbid tabs in source code than to risk the mixing of tabs and spaces. Guido van Rossum of Python himself has said that if he were to design Python again he would forbid tabs.
2014-06-09 20:47:41 +00:00
Nimrod is certainly not unique in forbidding tabs. [YAML](http://www.yaml.org/faq.html) does the same.
# I get an error trying to compile Nimrod on Windows.
If this error looks something like the following:
```
c_code/nimbase.h:382:13: error: size of array 'assert_numbits' is negative
typedef int assert_numbits[sizeof(NI) == sizeof(void*) && NIM_INTBITS == sizeof
(NI)*8 ? 1 : -1];
```
Then you are likely trying to compile the C sources with a 64bit version of GCC. If you are trying to do this then you should note that there is a ``build64.bat`` file which you should execute instead of the ``build.bat`` file.
If the error does not resemble the above then the problem is likely with the C sources. Ask for help on IRC or submit an issue on github!