在我的netbeans配置中,有些东西被搞砸了,我无法弄清楚它是什么或如何修复它.我在debian 7.4上运行netbeans 8.0 c ++.当我有这个代码时:
#include <cstdlib>
#include <vector>
using namespace std;
int main(int argc, char** argv)
{
vector<int> h;
h.push_back(4); //THIS LINE
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Netbeans以红色突出显示我对其进行评论的行,并说它无法解析标识符push_back.当我只是输入h.一些矢量构造函数的建议,但没有像push_back或erase这样的方法.我不明白为什么会这样,它是在一个小时前工作的,我从此没有改变任何东西.当我打开我的一个项目时,它就破了.
我尝试打开和关闭项目,关闭和打开netbeans,重新启动计算机,然后重新安装netbeans.没有任何效果.
我正在尝试为haskell中的函数式语言创建一个解释器(我是该语言的新手).我正在创造可能是极简主义和便利的奇怪组合 - 没有抽象数据类型,但我想提供制作同类列表的能力.
所以我的基本变量是data Datum = DatInt Int | DatDbl Double | DatBool Bool,我已经意识到我完全不确定如何表示同类列表.添加构造函数List Datum或类似的东西会产生异构列表,并为每种类型创建单独的列表,即ListInt [Int] | ListDbl [Double]排除列表列表.
表示同质列表的最佳方法是什么?
我刚开始学习LISP只是为了它,所以我对它完全陌生.我确实有其他语言的经验.我试着写一个完全按原样返回列表的函数,除了没有最后一个元素.
虽然我打算重写这个函数,因为我确信有一个更简单的方法,我的版本产生了一些非常不寻常的输出.为了记录,我正在使用CLISP环境.
(defun my-butlast (L)
(if (null (rest L))
nil
(if (eq nil (my-butlast (rest L)))
(first L)
(cons (first L) (my-butlast (rest L)))
)
)
)
(my-butlast '(1 2 3 4 5))
Run Code Online (Sandbox Code Playgroud)
这产生了输出 (1 2 3 . 4)
所以我的问题是,问题出在哪里?
此外,如果我试图运行,(length (my-butlast '(1 2 3 4)))我会得到一个神秘的错误:正确的列表不能以4结尾.这是什么意思?