当在函数式编程中使用术语"引用透明"时,术语"不可观察"的含义是什么?
是否可以从Haskell中的函数列表中删除重复项(如在nub中)?基本上,是否可以为(Eq(整数 - >整数))添加一个实例
在ghci:
let fs = [(+2), (*2), (^2)]
let cs = concat $ map subsequences $ permutations fs
nub cs
<interactive>:31:1:
No instance for (Eq (Integer -> Integer))
arising from a use of `nub'
Possible fix:
add an instance declaration for (Eq (Integer -> Integer))
In the expression: nub cs
In an equation for `it': it = nub cs
Run Code Online (Sandbox Code Playgroud)
提前致谢.
...
此外,根据larsmans的回答,我现在能够做到这一点
> let fs = [AddTwo, Double, Square]
> let css = nub $ concat $ map …Run Code Online (Sandbox Code Playgroud) 下面的代码片段是功能性的(从某种意义上说它正在工作;-)),但似乎充其量只是蹩脚......
任何人都可以建议一种方法来使这个更容易组合或至少不那么难看?
该代码基于此页面上的示例: 使用RxJS包装现有API
function connect() {
return rx.Observable.create(function (observer) {
mongo.connect('mongodb://127.0.1:27017/things', function(err, db) {
if(err) observer.onError(err);
observer.onNext(db);
});
}).publish().refCount();
}
function getThings(db) {
return rx.Observable.create(function (observer) {
db.collection('things').find().toArray(function(err, results) {
if(err) observer.onError(err);
observer.onNext(results);
observer.onCompleted();
});
return function () {
db.close();
};
}).publish().refCount();
}
connect().subscribe(
function (db) {
getThings(db).subscribe(console.log);
}, function (err) {
console.log(err);
}
);
Run Code Online (Sandbox Code Playgroud) 在Haskell中,有谁知道以下结果的原因?
Prelude Data.List> map (\x -> x - 0.1) [0.2,0.3..0.9]
[0.1,0.19999999999999998,0.29999999999999993,0.3999999999999999,0.4999999999999999,0.5999999999999998,0.6999999999999996,0.7999999999999995]
Run Code Online (Sandbox Code Playgroud)
代替
[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8]
Run Code Online (Sandbox Code Playgroud)