小编Bar*_*ski的帖子

函数返回lambda表达式

我想知道是否可以在C++ 11中编写一个返回lambda函数的函数.当然一个问题是如何声明这样的功能.每个lambda都有一个类型,但是这种类型在C++中是不可表达的.我不认为这会奏效:

auto retFun() -> decltype ([](int x) -> int)
{
    return [](int x) { return x; }
}
Run Code Online (Sandbox Code Playgroud)

这不是:

int(int) retFun();
Run Code Online (Sandbox Code Playgroud)

我不知道从lambdas到函数指针或类似函数的任何自动转换.手工制作函数对象并返回它的唯一解决方案是什么?

c++ lambda function c++11

85
推荐指数
4
解决办法
3万
查看次数

Monads作为附属物

我一直在读类别理论中的单子.monads的一个定义使用一对伴随函子.monad是使用这些仿函数的往返定义的.显然,在类别理论中,附加是非常重要的,但我没有看到关于伴随函子的Haskell monad的任何解释.有没有人给它一个想法?

monads haskell functor category-theory

76
推荐指数
3
解决办法
4895
查看次数

如何使用C++ 11标准库生成随机数

新的C++ 11标准有一整章专门用于随机数生成器.但是,我如何执行过去像这样编码的最简单,最常见的任务,但不使用标准C库:

srand((unsigned int)time(0));
int i = rand();

是否可以使用开箱即用的随机数引擎,分布和种子的合理默认值?

c++ random c++11

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

XTypeOperators扩展名不能用作pragma

我正在使用GHCi 7.0.3以及实现类型级列表的以下程序:

{-# LANGUAGE TypeOperators #-}

data True
data False

-- List
data Nil
data Cons x xs

-- Type-level infix operator must begin with ':'
data x ::: xs
infixr 5 ::: -- set precedence level to 5 (tight)
Run Code Online (Sandbox Code Playgroud)

它编译,但当我测试它:

:t (undefined :: True:::Nil)
Run Code Online (Sandbox Code Playgroud)

(什么是转换为类型undefined时的类型True:::Nil?)我收到此错误:

Illegal operator `:::' in type `True ::: Nil'
  Use -XTypeOperators to allow operators in types
Run Code Online (Sandbox Code Playgroud)

事实上,当我用旗帜开始GHCi时

-XTypeOperators
Run Code Online (Sandbox Code Playgroud)

我得到了预期的结果:

(undefined :: True ::: Nil) :: True ::: Nil
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么等效的pragma不起作用:

{-# LANGUAGE …
Run Code Online (Sandbox Code Playgroud)

haskell types

14
推荐指数
2
解决办法
1540
查看次数

Haskell Java互操作性

Haskell/Java互操作的当前解决方案是什么?我在Meijer和Finne看过关于Lambada的论文.有一个名为GCJNI的项目,但它似乎已经不存在了 - 它的链接被打破了.有没有可以开箱即用的东西?

java haskell language-interoperability

13
推荐指数
1
解决办法
2691
查看次数

F#中的异步屏障

我在F#中编写了一个程序,它异步列出磁盘上的所有目录.异步任务列出给定目录中的所有文件,并创建单独的异步任务(守护程序:我使用Async.Start启动它们)以列出子目录.它们都将结果传递给中央邮箱处理器.

我的问题是,如何检测所有守护程序任务已完成,并且将不再有文件到达.基本上我需要一个障碍来完成我的顶级任务(直接和间接)孩子的所有任务.我在F#的异步模型中找不到类似的东西.

我所做的是创建一个单独的MailboxProcessor,我在其中注册每个任务的开始和终止.当活动计数变为零时,我就完成了.但我对这个解决方案不满意.还有其他建议吗?

f# synchronization functional-programming multitasking

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

比较F#中的文件内容

我写了一个快速而脏的函数来比较文件内容(BTW,我已经测试过它们的大小相同):

let eqFiles f1 f2 =
  let bytes1 = Seq.ofArray (File.ReadAllBytes f1)
  let bytes2 = Seq.ofArray (File.ReadAllBytes f2)
  let res = Seq.compareWith (fun x y -> (int x) - (int y)) bytes1 bytes2
  res = 0
Run Code Online (Sandbox Code Playgroud)

我不满意将所有内容读入数组.我宁愿有一个懒惰的字节序列,但我在F#中找不到合适的API.

.net f# filestream

3
推荐指数
2
解决办法
1062
查看次数