问题标签 [nim-lang]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
596 浏览

interpreter - Nimrod的Brainfuck翻译

我正在玩弄nim(在撰写本文时仍称为 nimrod),用该语言编写 Brainfuck 解释器。没有实现循环,我有:

它编译成功,但是当我向它输入一个输入时:

哪个应该打印字符'A'它返回'N'。有任何想法吗?

0 投票
2 回答
902 浏览

d - Nimrod 中的 Ada 类类型

今天我确实在 D 邮件列表中询问是否可以以类似于 Ada 的wiki页面中的示例的方式定义和使用自定义数据类型:

回复显示如下

这表明这是可能的,但可能错过了艾达的优雅。

现在,在最近阅读了 Nimrod 之后,我想知道它如何处理类似的任务以确保相同的 Ada 的类型安全?

0 投票
2 回答
1365 浏览

bitwise-operators - 在 Nimrod 中,按位运算的语法是什么?

我刚刚发现 Nimrod 并且有一个基本问题(在文档中找不到答案)。

你如何使用按位运算?我有以下代码,其中 x 定义为 int :

这不编译:

如果我尝试:

我明白了

有什么诀窍?

0 投票
1 回答
308 浏览

inheritance - 继承类型编译 Nimrod 程序中未声明的字段

我尝试编译以下代码:

但我收到以下错误:

错误:未声明的字段:'id'

怎么id不申报?代码示例直接来自教程。语言中是否有一些未反映在教程中的更改?


另外,如果我尝试运行以下代码:

我收到以下错误:

SIGSEGV:非法存储访问。(尝试从 nil 读取?)

为什么?

0 投票
1 回答
685 浏览

include - 如何从 Nim 的导入失败中恢复?

Nim中,我可以编写以下代码来导入外部模块:

只要我有该模块,它就可以正常工作,但是对于可能下载代码但没有安装模块的人来说,编译将失败,并显示一条用户友好的消息:

有什么方法可以环绕它,import以便我可以像异常一样捕获它并执行类似于when语句的替代代码分支?我希望找到一些importable类似宏或我可以使用的东西:

事实上,我想让一些模块成为可选模块,而不是一个简单的错误消息,这样编译仍然可以继续进行,也许功能会减少。这可能吗?

解决方案编辑:根据这里的答案是我的版本如何解决这个问题,首先你需要一个moduleChecker具有以下来源的二进制文件:

然后,让这个命令可用,可以使用以下宏:

不幸的是,必须生成一个单独的进程,不仅用于外部编译,而且还需要另一个进程来生成临时文件以进行检查,因为staticWrite当前版本中没有在编译时生成文件。

0 投票
1 回答
956 浏览

parsing - 如何在 Nimrod 的编译时解析字符串?

通过Nimrod 教程的第二部分,我已经到达了解释宏的部分。文档说它们在编译时运行,所以我想我可以对字符串进行一些解析来为自己创建一种特定于域的语言。但是,没有示例说明如何执行此操作,调试宏示例未显示如何处理字符串参数。

我想转换如下代码:

…变成我会手写的东西:

显然这个例子不是很有用,但我想看看一些简单的东西(多行/逗号分割,然后是转换),它可以帮助我实现更复杂的东西。

我的问题是宏如何获取输入字符串,解析它(在编译时!),以及在编译时可以运行什么样的代码(它只是语言的一个子集?我可以使用其他的宏/代码吗?导入的模块)?

编辑:根据答案,这里有一个可能的代码解决方案:

0 投票
3 回答
332 浏览

macros - 将复杂参数传递给 Nimrod 宏

我想将配置参数传递给宏。我已经有一个基于这些参数(序列元组)生成一串 Nimrod 代码的过程。我知道我可以传递一个字符串并用strVal转换它(如答案https://stackoverflow.com/a/19956317/334703所示)。我可以对更复杂的数据做同样的事情吗?

或者,我可以在编译时过程中使用此 Nimrod 代码字符串并调用诸如parseStmt 之类的过程吗?

编辑: Nimrod 代码的生成对于测试我的想法很有用,我同意我可能应该直接生成 AST。

这是我正在考虑的结构示例。

0 投票
1 回答
848 浏览

math - 你如何在 Nimrod 中使用矩阵?

我在 GitHub 上找到了这个项目;它是为“nimrod 矩阵”返回的唯一搜索词。我把它的基本部分改了一点,使它编译没有错误,然后我添加了最后两行来构建一个简单的矩阵,然后输出一个值,但是“getter”函数不起作用由于某些原因。我修改了此处找到的添加属性的说明,但有些地方不对劲。

到目前为止,这是我的代码。我想在 Nimrod 中使用 GNU 科学图书馆,我认为这是合乎逻辑的第一步。

这是我得到的错误:

谢谢你们!

0 投票
2 回答
5940 浏览

pointers - Nim 中的价值与参考模型是什么?

注意:我不是在问指针和引用之间的区别,对于这个问题,它完全无关紧要。

我找不到明确说明的一件事——Nim 使用什么模型?

像 C++ - 你有值并与new你一起创建指向数据的指针(在这种情况下,变量可以保存指向指向...指向数据的指针的指针)?

或者像 C# 一样——您将 POD 类型作为值,但用户定义的对象具有引用(隐式)?

我发现只有解引用是自动的,就像在 Go 中一样。

改写。你定义你的新类型,比方说Student(名字,大学,地址)。你写:

  1. 保存实际student数据(Student类型/类)
  2. 保持student指向数据的指针
  3. 保持student指向数据指针的指针

或者从那些方面来说有些是不可能的?

0 投票
1 回答
267 浏览

ubuntu - 为 Nimrod 安装 Babel 时遇到问题

我在安装时遇到问题babel

首先我从github下载了所有东西,

然后我尝试使用安装,

但后来我得到了这个,

我正在运行 Ubuntu 12.04 LTS,并且 Nimrod 0.9.2 安装在/opt/nimrod/. 我的第一直觉是做sudo chmod a+rwx /opt/nimrod,但这并没有解决任何问题。你们有什么想法吗?