小编Vla*_*ala的帖子

什么是.在Python的import语句中是什么意思?

我正在查看Python multiprocessing模块的代码,它包含以下行:

from ._multiprocessing import win32, Connection, PipeConnection
Run Code Online (Sandbox Code Playgroud)

代替

from _multiprocessing import win32, Connection, PipeConnection
Run Code Online (Sandbox Code Playgroud)

微妙的差异是之前的时期_multiprocessing.那是什么意思?为什么这个时期?

python module

116
推荐指数
3
解决办法
5万
查看次数

为什么这个reinterpret_cast没有编译?

我明白这reinterpret_cast很危险,我只是这样做来测试它.我有以下代码:

int x = 0;
double y = reinterpret_cast<double>(x);
Run Code Online (Sandbox Code Playgroud)

当我尝试编译程序时,它给我一个错误说

从'float'类型转换为'double'类型无效

这是怎么回事?我认为reinterpret_cast是你可以用来将苹果转换为潜艇的流氓演员,为什么这个简单的演员不会编译?

c++ casting reinterpret-cast

62
推荐指数
6
解决办法
4万
查看次数

获取矩阵中n个最大元素的索引

假设我有以下矩阵:

01 02 03 06
03 05 07 02
13 10 11 12
32 01 08 03
Run Code Online (Sandbox Code Playgroud)

我想要前5个元素的索引(在这种情况下,32,13,12,11,10).在MATLAB中最干净的方法是什么?

matlab matrix

50
推荐指数
4
解决办法
8万
查看次数

有没有更好的方法在Haskell中拥有可选参数?

我习惯于在Python中定义可选参数:

def product(a, b=2):
    return a * b
Run Code Online (Sandbox Code Playgroud)

Haskell没有默认参数,但我可以通过使用Maybe来获得类似的东西:

product a (Just b) = a * b
product a Nothing = a * 2
Run Code Online (Sandbox Code Playgroud)

如果您有多个参数,这会很快变得麻烦.例如,如果我想做这样的事情怎么办:

def multiProduct (a, b=10, c=20, d=30):
    return a * b * c * d
Run Code Online (Sandbox Code Playgroud)

我必须有八个multiProduct定义来解释所有情况.

相反,我决定采用这个:

multiProduct req1 opt1 opt2 opt3 = req1 * opt1' * opt2' * opt3'
    where opt1' = if isJust opt1 then (fromJust opt1) else 10
    where opt2' = if isJust opt2 then (fromJust opt2) else 20
    where opt3' = if …
Run Code Online (Sandbox Code Playgroud)

haskell

47
推荐指数
4
解决办法
1万
查看次数

在Unix上命名管道(FIFO)与多个读者

我有两个程序,Writer和Reader.

我有一个从Writer到Reader的FIFO,所以当我在Writer中写入stdin的东西时,它会从Reader打印到stdout.

我尝试打开两个读者,并且只从两个Reader程序中的一个输出到stdout.每次运行时,Unix选择打印标准输出的读者程序似乎是任意的,但是一旦选择了其中一个程序,每个输出到标准输出都会从同一个Reader程序打印出来.

有谁知道为什么会这样?

如果我有两个WRITER程序,它们都可以写入同一个管道.

unix fifo

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

是否有充分的理由使用unsafePerformIO?

问题就是这一切.更具体地说,我正在编写绑定到C库,我想知道我可以使用哪些c函数unsafePerformIO.我假设使用unsafePerformIO任何涉及指针的东西是一个很大的禁忌.

很高兴看到其他情况也可以使用unsafePerformIO.

haskell

25
推荐指数
4
解决办法
8074
查看次数

组成功能组合:(.).(.)如何工作?

(.)采用两个函数,它们接受一个值并返回一个值:

(.) :: (b -> c) -> (a -> b) -> a -> c
Run Code Online (Sandbox Code Playgroud)

既然(.)两个参数,我觉得(.).(.)应该是无效的,但它完全没问题:

(.).(.) :: (b -> c) -> (a -> a1 -> b) -> a -> a1 -> c
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?我意识到这个问题措辞严厉......所有的功能都只是因为讨论而采取了一个论点.也许更好的方式来说它是类型不匹配.

haskell currying pointfree

25
推荐指数
4
解决办法
1934
查看次数

Monads不能做什么箭头?

箭头似乎在Haskell社区中越来越受欢迎,但在我看来,Monads更强大.使用箭头获得了什么?为什么不能使用Monads呢?

monads haskell arrows

20
推荐指数
2
解决办法
2005
查看次数

为什么!1在Perl中没有给我任何东西?

这很奇怪.下列:

$sum = !0;
print $sum;
Run Code Online (Sandbox Code Playgroud)

如你所料打印1.但是这个

$sum = !1;
print $sum;
Run Code Online (Sandbox Code Playgroud)

没有打印出来.为什么?

perl boolean

18
推荐指数
3
解决办法
2950
查看次数

加入两个没有`mappend`的Data.Texts的标准方法

我听说这Data.TextString在未来的Haskell版本中取代s.我对此有一个问题(++)是仅为列表定义.要连接两个Texts,我需要使用

text1 `mappend` text2
Run Code Online (Sandbox Code Playgroud)

这很快就会变得冗长.理想情况下,我希望能够使用++这些Text,但如果没有,还有什么是另一种选择?我可以定义自己的中缀运算符,但我想要一种标准的方法.

haskell

15
推荐指数
1
解决办法
2328
查看次数