小编Sho*_*hoe的帖子

为什么我对自我引用懒惰序列的直觉是错误的?

在Haskell中,我可以在GHCI中编写一个自引用序列,如下所示:

?> let x = 1:map (+1) x
?> take 5 x
Run Code Online (Sandbox Code Playgroud)

产生:

[1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)

然而,我对懒惰评估的直觉说这应该在扩展期间发生

let x = 1:map (+1) x
1:2:map (+1) x
1:2:map (+1) [1, 2] <-- substitution
1:2:2:3:map (+1) x
1:2:2:3:map (+1) [1, 2, 2, 3] <-- substitution
1:2:2:3:2:3:3:4:map (+1) x
...
Run Code Online (Sandbox Code Playgroud)

这显然不是正在发生的事情.我可以在正确答案中看到模式.我们只是在无限流中一次移动列表中的一个元素.我认识的模式,我可以在代码中应用它.然而,它与我的懒惰评估的心理模型不符.感觉有点"神奇".我的直觉在哪里错了?

haskell lazy-evaluation

8
推荐指数
2
解决办法
320
查看次数

C++在迭代时删除列表成员:标准解决方案不起作用?

这是我的问题.我已经阅读了许多关于如何在迭代它时删除列表成员的问题以及我尝试了答案提出的各种解决方案.碰巧他们似乎没有工作.我有这种类的列表:

class Walker {
    public:
        Walker(int); 
        ~Walker(); 

        double *x; 
        double *y; 
        double *z; 
        double weight; 
        int molteplicity; 
};
Run Code Online (Sandbox Code Playgroud)

构造函数和析构函数如下

Walker::Walker(int particle_num) {
    x = new double[particle_num];
    y = new double[particle_num];
    z = new double[particle_num];
}

Walker::~Walker() {
    delete x;
    delete y;
    delete z;
}
Run Code Online (Sandbox Code Playgroud)

现在,列表

list<Walker> population;
Run Code Online (Sandbox Code Playgroud)

被定义为另一个类的成员.现在,如果元素molteplicity为null(通过另一个函数计算),我必须从类中删除成员,这就是我的方法:

for( it = population.begin(); it != population.end(); ) {
        if( it->molteplicity == 0 ) {
            it = population.erase(it);
        } else {
            ++it;
    }
Run Code Online (Sandbox Code Playgroud)

在运行时收到以下错误:

prog(22332)malloc:*对象0x7f838ac03a60的错误:未释放指针被释放*在malloc_error_break中设置断点以调试Abort陷阱:6

你看到错误吗?非常感谢您的帮助!!如果您需要更多代码,请告诉我.

c++

8
推荐指数
2
解决办法
141
查看次数

不理解C++类型不匹配:const Foo*到Foo*const&

拥有这组对象和语句:

QSet<Foo*> set;
iterator QSet::insert(const T & value)    //type of the function I want to call
const Foo * get() const                   //type of the function I use to get the argument

set.insert(get());                        //the line showing up as error
Run Code Online (Sandbox Code Playgroud)

我得到错误"没有已知的转换参数1从'const Foo*'到'Foo*const&".我想我在阅读这些类型时遇到了麻烦,因为我不知道应该怎么做才能使这项工作成功.

根据我的阅读,const关键字适用于其左侧的类型,顶级const除外,它可以写入它应用的类型的左侧.我的猜测是我必须将get()转换为引用,但我不确定如何做到这一点.

c++ pointers const reference

8
推荐指数
2
解决办法
978
查看次数

懒加载?避免它更好吗?

我刚刚读到了关于"延迟加载"设计模式的内容.

是否可以过度使用延迟加载来加载所有类并include(..)完全忘记?
这种方法的缺点是什么?

php design-patterns lazy-loading

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

在NSMenuItem中使用NSProgressIndicator

我正在尝试在状态栏菜单中使用NSProgressIndicator(不确定).我正在使用NSView对象作为menuitem的视图,然后查看进度指示器以显示它.但每当我尝试调用startAnimation时:对于进度,没有任何反应.当我尝试在普通的NSWindow上做同样的事情时,它可以很好地工作,而不是在一个menuitem中.

我是cocoa和objective-c的新手,所以我可能会忽略一些"显而易见的"但我已经搜索了很多但是没有成功.我发现一些关于menuitems的东西在显示时无法更新,你需要使用无边框窗口.但我无法在任何文档中证实这一点.

编辑:

好的,现在差不多了.当使用setUsesThreadedAnimation:并从MenuDelegate的menuWillOpen中创建一个新线程.该线程运行本地方法:

-(void) doWork(NSProgressIndicator*) p{
     [p startAnimation:self];
}
Run Code Online (Sandbox Code Playgroud)

这将在打开菜单时以随机(?)为基础启动progressindicator.如果我startAnimation:直接打电话doWork:(仍然使用新线程),它永远不会工作.不setUsesThreadedAnimation:使进度条为动画创建自己的线程吗?

cocoa objective-c nsview nsmenuitem nsprogressindicator

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

如何从Oracle中的日期字段中仅提取日期值?

我是Oracle数据库的新手.我对Oracle中的日期时间概念知之甚少.我面临的问题是检索在特定日期输入的记录.但是当我在数据库上执行SQL查询时,它返回零记录.

数据库具有日期字段,其中包含具有日期时间值的记录.

SQL查询: SELECT * FROM table WHERE table.daterecord = to_date(03-Mar-2010)

它没有返回任何记录但是如果我将查询更改为

SELECT * FROM table WHERE table.daterecord > to_date(04-Mar-2010)
Run Code Online (Sandbox Code Playgroud)

它会返回一些记录.以上差异是因为时间.我如何从日期中提取时间值.我可以使用截断功能吗?提前感谢您的宝贵建议.

oracle

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

框架助手,它们的用途是什么?

我开始研究一些框架.特别是Code Igniter让我很着迷.但通过我发现的文件夹搜索system/helpers包含21个PHP文件.在这些文件中,我们发现了数千个与html,xml,字符串,数组,数字,表单等相关的函数.

这应该很简单,但我真的不明白这些helper文件的含义.我的意思是:什么通常被认为是帮手?他们需要吗?我可以没有风险地删除它们吗?

php frameworks codeigniter helper

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

在PHP中模拟LIKE

有没有办法用相同的语法在PHP中模拟SQL的LIKE运算符?(%以及_通配符和通用$escape转义字符)?这样:

$value LIKE $string ESCAPE $escape
Run Code Online (Sandbox Code Playgroud)

你可以有一个函数,在不使用数据库的情况下返回PHP的评估吗?(考虑到$value,$string并且$escape已经设置了值).

php sql string pcre sql-like

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

您自己的OpenID Connect提供程序(开源)

OpenID Connect仍然有点新,我正在寻找开源软件来运行我自己的OpenID Connect提供程序(OP服务器).它应该尽可能简单(Java或PHP)才能快速设置测试环境.但它也应该允许我添加自定义插件,例如让OP连接到其他用户身份验证因素(2FA).

Connect2ID看起来像这样,但似乎还没有.我也见过其他解决方案,如GLUU或mitreid-connect ..

还有其他OP服务器软件可用作开源吗?哪一个最简单的开始?

php java openid connect

7
推荐指数
0
解决办法
6695
查看次数

仅从模块导出getter或setter

有没有办法让我只从具有镜头的模块中导出特定的吸气剂xor setter?

例如,让我们假设一个数据结构具有一直存在的不变性,>= 0仅通过递增它并仅使用初始值创建来修改0:

module Something
    ( Counter
    -- export only `count` getter
    , make
    , increment
    ) where

data Counter = Counter { _count :: Int } deriving (Eq)
makeLenses ''Positive

make :: Counter
make = Counter 0

increment :: Counter -> Counter
increment c = c ^. count %~ (+1)
Run Code Online (Sandbox Code Playgroud)

我怎么能只导出count吸气剂?

haskell invariants lenses haskell-lens

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