小编Tho*_*ing的帖子

用户可以删除给定域中的cookie吗?

Greasemonkey可以删除给定域中的cookie吗?如果是这样,怎么样?

javascript cookies firefox greasemonkey userscripts

8
推荐指数
1
解决办法
7385
查看次数

如何在Haskell中处理无限的IO对象列表?

我正在编写一个从文件列表中读取的程序.每个文件都包含指向下一个文件的链接或标记它是链的末尾.

作为Haskell的新手,似乎处理这个的惯用方法是为此目的的可能文件的懒惰列表,我有

getFirstFile :: String -> DataFile
getNextFile :: Maybe DataFile -> Maybe DataFile

loadFiles :: String -> [Maybe DataFile]
loadFiles = iterate getNextFile . Just . getFirstFile

getFiles :: String -> [DataFile]
getFiles = map fromJust . takeWhile isJust . loadFiles
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.唯一的问题是,由于getFirstFile和getNextFile都需要打开文件,我需要将它们的结果放在IO monad中.这给出了修改后的形式

getFirstFile :: String -> IO DataFile
getNextFile :: Maybe DataFile -> IO (Maybe DataFile)

loadFiles :: String -> [IO Maybe DataFile]
loadFiles = iterate (getNextFile =<<) . Just . getFirstFile

getFiles :: String -> IO [DataFile] …
Run Code Online (Sandbox Code Playgroud)

io monads haskell infinite-loop lazy-evaluation

8
推荐指数
3
解决办法
1272
查看次数

C++静态初始化无状态类

假设我有一个T级

  1. T没有虚函数.
  2. T实例没有状态.
  3. T具有自身的静态成员实例.
  4. T本身没有其他状态.

C++静态初始化惨败可以破坏我的程序吗?我不这么认为,因为即使其中一个静态实例在使用之前没有初始化,这也不重要,因为T对象是无状态的.

我有兴趣为类似枚举的类这样做:


// Switch.h

class Switch {
public:
    static Switch const ON;
    static Switch const OFF;
    bool operator== (Switch const &s) const;
    bool operator!= (Switch const &s) const;
private:
    Switch () {}
    Switch (Switch const &); // no implementation
    Switch & operator= (Switch const &); // no implementation
};
Run Code Online (Sandbox Code Playgroud)
// Switch.cpp

Switch const Switch::ON;
Switch const Switch::OFF;

bool Switch::operator== (Switch const &s) const {
    return this == &s;
}

bool Switch::operator!= (Switch const &s) const …
Run Code Online (Sandbox Code Playgroud)

c++ static initialization stateless

7
推荐指数
1
解决办法
1188
查看次数

brk和sbrk代表什么?

虽然我知道Unix系统调用brk和函数的sbrk作用,但我不知道它们代表什么.任何人都可以开导我吗?

c unix sbrk brk

7
推荐指数
1
解决办法
3471
查看次数

从GADT存在的安全使用unsafeCoerce?

说我有

{-# LANGUAGE GADTs #-}

import Unsafe.Coerce 

data Any where
    Any :: a -> Any

type Index = Int

newtype Ref a = Ref Index

mkRef :: a -> Index -> (Any, Ref a)
mkRef x idx = (Any x, Ref idx)

(any0, ref0) = mkRef "hello" 0
(any1, ref1) = mkRef 'x' 1
(any2, ref2) = mkRef (666 :: Int) 2

anys :: [Any]
anys = [any0, any1, any2]

derefFrom :: Ref a -> [Any] -> a
(Ref idx) …
Run Code Online (Sandbox Code Playgroud)

haskell

7
推荐指数
2
解决办法
267
查看次数

使用文字列表进行循环操作?

在C++ 11中,是否可以编写以下内容

int ns[] = { 1, 5, 6, 2, 9 };
for (int n : ns) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

像这样的事情

for (int n : { 1, 5, 6, 2, 9 }) { // VC++11 rejects this form
   ...
}
Run Code Online (Sandbox Code Playgroud)

c++ for-loop initializer-list c++11

7
推荐指数
2
解决办法
1378
查看次数

多个va_end调用的顺序是否重要?

我有以下代码:

va_list va[2];
va_start(va[0], fmt);
va_start(va[1], fmt);
process(fmt, va);
va_end(va[0]);
va_end(va[1]);
Run Code Online (Sandbox Code Playgroud)

我已经查看了各种站点上的文档va_startva_end,并且他们说的是在调用函数返回之前va_end应该为每个站点调用它们va_start.

我不确定的是,电话的顺序是否重要.特别是

va_end(va[0]);
va_end(va[1]);
Run Code Online (Sandbox Code Playgroud)

与...完全相同

va_end(va[1]);
va_end(va[0]);
Run Code Online (Sandbox Code Playgroud)

在上面的示例代码中?

c c++ variadic-functions

7
推荐指数
2
解决办法
226
查看次数

libclang获得原始价值

如何使用libclang获取原始文字的值?

例如,如果我有一个游标类型CXCursor_IntegerLiteral的CXCursor,我该如何提取文字值.


更新:

我使用libclang遇到了很多问题.我强烈建议完全避免它,而是使用clang提供的C++接口.C++接口非常有用,并且有很好的文档记录:http://clang.llvm.org/doxygen/annotated.html

我现在看到libclang的唯一目的是为你生成ASTUnit对象,就像下面的代码一样(否则它并不容易):

ASTUnit * astUnit;
{
    index = clang_createIndex(0, 0);
    tu = clang_parseTranslationUnit(
        index, 0,
        clangArgs, nClangArgs,
        0, 0, CXTranslationUnit_None
        );
    astUnit = static_cast<ASTUnit *>(tu->TUData);
}
Run Code Online (Sandbox Code Playgroud)

现在你可能会说libclang是稳定的而C++接口不是.这几乎不重要,因为你用libclang计算AST并用它创造kludges的时间浪费了你的大部分时间.我只是花了几个小时来修复在版本升级后无法编译的代码(如果需要的话).

c++ libclang

6
推荐指数
3
解决办法
2688
查看次数

命名参数的评估顺序

可能重复:
在传递给方法时是否按顺序评估参数?

说我有

void foo (int x, int y)

并通过以下方式调用:

foo(y: genNum(), x: genNum())

在这种情况下,C#是否保证x和y的评估顺序?

c# named-parameters operator-precedence

6
推荐指数
1
解决办法
465
查看次数

将无效的int值转换为枚举

说我有

enum Foo { Foo0, Foo1, Foo2 };
Run Code Online (Sandbox Code Playgroud)

请注意,没有显式声明的Foo常量值为3(它们是0,1和2).

以下是否调用未定义的行为?

Foo yay = (Foo) 3;
Run Code Online (Sandbox Code Playgroud)

特别注意3可能适合内部表示Foo.

c++ enums

6
推荐指数
1
解决办法
270
查看次数