小编swa*_*ang的帖子

现实世界Haskell的哪些部分现在已经过时或被视为不良做法?

Real World Haskell的第19章中,很多例子现在因为改变而失败了Control.Exception.

这让我觉得也许本书中的一些内容实际上已经过时,不再值得学习,毕竟它已经有6年了.我唯一的另一个参考是" 了解你是一个很好的Haskell",虽然它是一本很棒的书,但与RWH相比它更为基础.

任何读过这本书的人都可以就哪些部分不再相关提出一些建议吗?特别是本书后半部分的章节,例如软件事务内存,并发编程,套接字编程等.

编辑:这是关于2008年12月出版的书的版本,这是迄今为止唯一的已知版本(2017年11月)

haskell exception-handling

104
推荐指数
1
解决办法
9309
查看次数

编译器检查未实例化的模板代码是什么?

例如,以下代码段使用gcc-4.9和clang-602进行编译

class Base                                                                      
{                                                                               
public:                                                                         
    static void foo() {}                                                        
    void badfoo(int i) {}                                                       
};                                                                              

template <typename T>                                                           
class Derived : public Base                                                     
{                                                                               
public:                                                                         
    void bar() { Base::foo(); }                                                 
    void badbar() { Base::badfoo(); }  // compiles ok
    //static void badbar() { Base::badfoo(); }  // compile error                                                                                    
    //void worsebar() { Base::nonexist(); }  // compile error                                   
};                                                                              

int main()                                                                      
{                                                                               
    return 0;                                                                   
}  
Run Code Online (Sandbox Code Playgroud)

但注释掉的行不会编译.

我的问题是:

  1. 为什么badbar()编译但worsebar()不编译?

  2. 如果我badbar()改为静态,它也不会编译,无论是否base::badfoo是静态的.

  3. 标准是否说明了在这种情况下应该检查什么?gcc4.4实际上甚至拒绝编译badbar().

更新:

问题1已被许多答案解释,但似乎编译器有时会更加努力地检查过载,它发生在gcc 4.4.3和4.8.2,而不是4.7.2和4.9.1.

问题2:正如Marco …

c++ gcc templates clang language-lawyer

29
推荐指数
2
解决办法
1253
查看次数

如何将格式化的本地时间转换为纪元?

我有一个当地时间"2013-08-27 10:01:22",如何将其转换为纪元时间?

基本上我需要相反的as.POSIXct,我搜索谷歌,令人惊讶的是没有找到任何.

r

16
推荐指数
2
解决办法
1万
查看次数

namecheap DNS配置不适用于Heroku自定义域上的https

我对如何设置namecheap和heroku非常困惑,因此他们一起工作以通过https提供自定义域.

我正在使用heroku ssl beta,在配置结束时,heroku已经更新了它的域映射,如下所示:

myapp.com        myapp.com.herokudns.com
www.myapp.com    wwww.myapp.com.herokudns.com
Run Code Online (Sandbox Code Playgroud)

ssl证书已成功添加到heroku,我知道因为我可以使用https://myapp.herokuapp.com绿色挂锁访问.

下一步应该是修改namecheap DNS,我遵循了本教程

我添加的条目是:

CNAME Record    www    myapp.herokuapp.com
URL Redirect    @      https://www.myapp.com
Run Code Online (Sandbox Code Playgroud)

那应该是它,但它不能像我预期的那样工作.

如果我输入myapp.com,它会转到https://www.myapp.com(所以重定向工作),但没有挂锁.

如果我https://www.myapp.com直接去,也一样.

我确定这不是因为这个改变还没有生效,因为我已经搞乱了其他领域,它已经在5分钟左右后生效了.

有人可以告诉我这是什么问题吗?

dns ssl https heroku namecheap

11
推荐指数
1
解决办法
4190
查看次数

System.IO.Error的重点是什么

我注意到Control.Exception中也有一个IOException类型,有一个单独的System.IO.Error模块和IOError类型是什么意思?是因为历史原因吗?我应该避免使用它而更喜欢Control.Exception.IOException吗?

haskell exception

9
推荐指数
1
解决办法
322
查看次数

为什么文件范围静态变量必须为零初始化?

C++默认初始化不会将变量与自动存储器清零,为什么对静态存储变量进行特殊处理?

它是由C和C++定义的东西必须兼容吗?如果是这样的话,为什么C决定进行零初始化?

如果文件范围静态变量与初始化程序一起提供,它们将首先进行零初始化,然后再次进行常量/动态初始化.这不是多余的吗?例如,以下代码来自cppreference:http://en.cppreference.com/w/cpp/language/zero_initialization

#include <string>

double f[3]; // zero-initialized to three 0.0's
int* p;   // zero-initialized to null pointer value
std::string s; // zero-initialized to indeterminate value
               // then default-initialized to ""
int main(int argc, char* argv[])
{
    static int n = argc; // zero-initialized to 0
                         // then copy-initialized to argc
    delete p; // safe to delete a null pointer
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,为什么n不能直接初始化为argc?

编辑:这个问题的一部分已经回答了这里的问题:静态变量初始化? 但我不认为这是重复的,因为另一个问题的答案没有回答我的第二个问题,即.为什么2阶段初始化.此外,另一篇文章的标题并没有真正说明究竟是什么问题.

c c++ initialization

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

gitlab API是否有速率限制

对于OAuth客户端,github的速率限制为5000 /小时,但我无法从gitlab中找到相同的信息(除了创建新用户和重置密码的时间为6分钟),是否意味着没有限制?

api gitlab

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

Linux上的标准C mktime线程安全吗?

mktime的手册页没有提到mktime的线程安全性,但它确实提到了这看起来像线程不安全:

调用mktime()还会将外部变量tzname设置为有关当前时区的信息.

我知道在Linux上mktime调用tzset来设置tzname,这是一个char*[]:

extern char*tzname [2];

和tzset将读取环境变量TZ和文件/ etc/localtime.因此,除非mktime使用互斥锁来保护所有这些操作,否则我无法看到它是如何保证线程安全的.

c linux thread-safety

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

Babel es2015预设不会将Map和Set转换为es5

我正在使用gulp-babel将我的es6代码翻译成es5

gulp.task('build_all_debug', ['config', 'compile'], function() {
    var stream = gulp.src(['public/js/config.js', 'public/js/*.js', 'public/compiled/*.js'])
        .pipe(babel({
            presets: ['es2015']
        }))
        .pipe(concat('app.js'))
        .pipe(gulp.dest('public/dist'));
    return stream;
});
Run Code Online (Sandbox Code Playgroud)

虽然它大部分工作正常,但它实际上并没有翻译Map和Set.我的结果js代码仍然包含它们,当我用karma/mocha/phantomJs运行单元测试时,我得到以下错误:

PhantomJS 2.1.1 (Mac OS X 0.0.0) notes.controller "before each" hook: workFn for "loads notes from the service" FAILED
    Can't find variable: Map
    activate@public/dist/app.js:2402:39
Run Code Online (Sandbox Code Playgroud)

有没有办法强迫babel将Map和Set转换为es5中的对象和数组?

javascript babel phantomjs ecmascript-6 karma-runner

6
推荐指数
2
解决办法
3042
查看次数

cabal无法使用http代理

我的Linux(redhat6)服务器必须使用http代理连接到外部世界.虽然它适用于像wget这样的其他东西,但它不适用于阴谋集团.

cabal update -v3
Run Code Online (Sandbox Code Playgroud)

显示如下错误:

407 - 需要代理身份验证cabal:无法下载 http://hackage.haskell.org/packages/archive/00-index.tar.gz:ErrorMisc "不成功的HTTP代码:407"

我试图将http_proxy环境变量更改为类似http:// user:passwd at proxy:port的格式,但它也不起作用.

这里也问同样的问题

但我不允许使用像polipo这样的代理服务器,有没有其他方法可以让代理服务器背后工作?

haskell cabal cabal-install

5
推荐指数
1
解决办法
2815
查看次数