小编The*_*Cat的帖子

为什么:t foldMap id产生tm - > m,而不是ta - > m

foldMap 有以下类型:

foldMap :: (Foldable t, Monoid m) => (a -> m) -> t a -> m
Run Code Online (Sandbox Code Playgroud)

如果你部分申请idfoldMap,你会得到

foldMap id :: (Foldable t, Monoid m) => t m -> m
Run Code Online (Sandbox Code Playgroud)

为什么会t a改变一个t m应用的时候id

haskell

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

为什么需要实现Add以使用特征Num添加两个变量?

我有一个叫做的函数add_vec.它需要两个向量并通过对压缩向量中的元素对执行元素加法来创建一个新向量.

extern crate num;
use num::traits::Num;

fn add_vec<N: Num>(v1s: Vec<N>, v2s: Vec<N>) -> Vec<N> {
    let mut v3s = Vec::new();
    for (v1, v2) in v1s.iter().zip(v2s.iter()) {
        v3s.push(v1 + v2)
    }
    v3s
}

#[cfg(test)]
mod tests {
    use super::add_vec;
    #[test]
    fn it_works() {
        let v1s = vec![1, 0, 3];
        let v2s = vec![0, 1, 1];
        let v3s = add_vec(v1s, v2s);
        assert_eq!(v3s, vec![1, 1, 4]);
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是我最终得到以下错误消息:

error[E0369]: binary operation `+` cannot be applied to type `&N`
  --> src/lib.rs:14:18 …
Run Code Online (Sandbox Code Playgroud)

generics rust

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

如何从tests目录中的文件访问src目录中的文件?

我有一个项目布局,如下所示:

src/
    int_rle.rs
    lib.rs
tests/
    test_int_rle.rs
Run Code Online (Sandbox Code Playgroud)

该项目编译cargo build,但我无法运行测试cargo test.我收到了错误

error[E0432]: unresolved import `int_rle`. There is no `int_rle` in the crate root
 --> tests/test_int_rle.rs:1:5
  |
1 | use int_rle;
  |     ^^^^^^^

error[E0433]: failed to resolve. Use of undeclared type or module `int_rle`
 --> tests/test_int_rle.rs:7:9
  |
7 |         int_rle::IntRle { values: vec![1, 2, 3] }
  |         ^^^^^^^^^^^^^^^ Use of undeclared type or module `int_rle`

error: aborting due to 2 previous errors

error: Could not compile `minimal_example_test_directories`.
Run Code Online (Sandbox Code Playgroud)

我的代码:

// …
Run Code Online (Sandbox Code Playgroud)

rust rust-cargo

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

使用python setup.py install在dist文件夹中创建tar.gz

我有,我想创建一个tar.gz项目python setup.py install.

问题是,我dist/在运行时只获取文件夹中的egg文件python setup.py install.我需要project.tar.gz文件,以便我可以轻松地从conda安装它.

如何python setup.py install创建tar.gz(我真的不需要任何egg文件).

我最终想要的是一个tar.gz存档,显示在pypi上有一个下载链接和md5,我曾经在PYPI更新之前得到它.

python pypi

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

为什么在设置索引时使用 reset_index(drop=True) 快得多?

reset_index(drop=True)当替代方案要快得多时,我为什么要使用?我确定我遗漏了一些东西。(或者我的时间安排不好......)

import pandas as pd

l = pd.Series(range(int(1e7)))

%timeit l.reset_index(drop=True)
# 35.9 ms +- 1.29 ms per loop (mean +- std. dev. of 7 runs, 10 loops each)

%timeit l.index = range(int(1e7))
# 13 us +- 455 ns per loop (mean +- std. dev. of 7 runs, 100000 loops each)
Run Code Online (Sandbox Code Playgroud)

python indexing series pandas

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

测试树的存在叶子的功能

假设我们有一个具有此定义的类型:

data Tree a = Leaf a | Branch [Tree a] deriving (Show,Eq)
Run Code Online (Sandbox Code Playgroud)

我想要做的是一个返回布尔值的函数. False如果我的二叉树包含Leaf,True如果没有.

这是我的代码:

tester :: Tree a -> Bool
tester (Leaf x) = False
tester (Branch y) = if (Branch (map tester y)) then True else False
Run Code Online (Sandbox Code Playgroud)

我知道这个问题的主要问题是没有办法评估,(Branch (map tester y))但我真的不知道如何解决它.

我可以添加一个新的子句,例如类似的东西tester (Branch y) = True,但我认为这不是一个好主意.

haskell

0
推荐指数
1
解决办法
167
查看次数

具有不同定义的mempty取决于mempty是左还是右arg?

我有以下数据类型和半群实例:

data Or a b =
  Fst a
  | Snd b deriving (Eq, Show)

instance Semigroup (Or a b) where
  (<>) (Fst a) (Fst b) = Fst b
  (<>) (Snd a) (Fst b) = Snd a
  (<>) (Fst a) (Snd b) = Snd b
  (<>) (Snd a) (Snd b) = Snd a
Run Code Online (Sandbox Code Playgroud)

我想为上面的类型创建一个monoid实例,但我不知道如何做到这一点.如果我使用以下定义

instance (Monoid a, Monoid b) => Monoid (Or a b) where
  mempty = (Fst mempty)
  mappend = (<>)
Run Code Online (Sandbox Code Playgroud)

<>除了I之外,它将适用于所有输入对mappend

(Fst a) <> mempty
Run Code Online (Sandbox Code Playgroud)

将评估为mempty …

haskell monoids semigroup

0
推荐指数
1
解决办法
52
查看次数

如何为幻像类型创建functor实例,其中第一个参数是幻像?

http://haskellbook.com中的一个练习是编写一个函子实例

data EvilGoateeConst a b =
  GoatyConst b
Run Code Online (Sandbox Code Playgroud)

我的尝试是

instance Functor (EvilGoateeConst a) where
  fmap f (GoatyConst b) = GoatyConst b
Run Code Online (Sandbox Code Playgroud)

最简单的解决方法是将参数切换到类型构造函数,但我想这是禁止的.在不改变原始类型的情况下解决此问题的最简单方法是什么?

(而且我没有应用这个函数,因为这会使编译器成为barf,但我认为根据法律它仍然是一个有效的函子.)

haskell functor

0
推荐指数
1
解决办法
110
查看次数

如何在列的子集中最有效地将0个val设置为NA?

我有一本关于统计的书(使用R),显示以下内容:

> pima$diastolic [pima$diastolic = = 0] <- NA
> pima$glucose [pima$glucose == 0] <- NA
> pima$triceps [pima$triceps == 0] <- NA
> pima$insulin [pima$insulin == 0] <- NA
> pima$bmi [pima$bmi == 0] <- NA
Run Code Online (Sandbox Code Playgroud)

有没有办法在一行或更高效地完成?我看到有一些函数,比如with,apply,subset来做类似的东西,但是无法弄清楚如何将它们组合在一起......

示例数据(如何将其作为数据帧读取(如pythons stringio):

  pregnant glucose diastolic triceps insulin  bmi diabetes age     test
1        6     148        72      35       0 33.6    0.627  50 positive
2        1      85        66      29       0 26.6    0.351  31 negative
3        8     183        64       0       0 23.3    0.672  32 positive
4 …
Run Code Online (Sandbox Code Playgroud)

r

0
推荐指数
1
解决办法
252
查看次数

如何在应用的操作中创建通用的Rust函数?

我有一个叫做的函数new_vec.它通过对压缩矢量中的元素对执行元素运算,需要两个向量并创建一个新向量.

fn main() {
    let v1s = vec![1, 0, 1];
    let v2s = vec![0, 1, 1];
    let v3s = new_vec(v1s, v2s);
    println!("{:?}", v3s) // [1, 1, 2]
}

fn new_vec(v1s: Vec<i32>, v2s: Vec<i32>) -> Vec<i32> {
    let mut v3s = Vec::<i32>::new();
    for (v1, v2) in v1s.iter().zip(v2s.iter()) {
         v3s.push(v1 + v2) // would also like to use -
    }
    v3s
}
Run Code Online (Sandbox Code Playgroud)

我希望有一个new_vec为共同二进制的操作,可以对两个整数,如使用功能+,-,/,*.

我该怎么做呢?我可以想象两种方式:宏和闭包.如何小例子来做到这一点的最佳方式,例如使用+-将不胜感激.

rust

0
推荐指数
1
解决办法
71
查看次数

在Cython生成的C代码中优化掉PyFloat_FromDouble,Pyx_GetItemInt和PyObject_RichCompare

我试图在Cython中为Python编写一个运行长度编码算术库.下面你会看到声明和算法热循环的重要部分是如何看的.它有两个地方有很多和中等的Python交互,第73-74行和第77行.为重度Python交互部分生成的C代码最后显示在一张图片中.我只会询问如何在这里解决73-74,因为我认为77的修复程序是相似的.

正如您所看到的,在生成的C代码中有1)很多类型转换,2)它使用richcompare和3)getitemint.我不明白为什么:1)类型应该是相同的,2)比较应该可以在C级别,因为他们只是比较相同类型的数字和3)getitem应该是多余的,因为你只是查找一个C数组中的索引.

如何解决这个问题以优化我的代码?numpy数组声明创建Python对象的问题是否需要以某种方式指向它们?

在此输入图像描述

在这里,您可以看到为我的热循环中的两个黑暗和淡黄色位置生成的C代码Cython:

在此输入图像描述

python types numpy cython

0
推荐指数
1
解决办法
198
查看次数

结果状态是提供的参数的状态,值是单位

23.8.2在haskell书中练习要求我构建如下状态:

put' :: s -> State s ()
put' s = undefined
-- should act like:
-- Prelude> runState (put "blah") "woot"
-- ((),"blah")
Run Code Online (Sandbox Code Playgroud)

我得到的唯一一个类型的实现是

import Control.Monad.Trans.State -- Not sure this is the right import
put' :: s -> State s ()
put' s = state $ \s -> ((), s)
Run Code Online (Sandbox Code Playgroud)

但这会在参数中返回状态runState,而不是put':

?> runState (put' "blah") "woot"
((),"woot")
Run Code Online (Sandbox Code Playgroud)

我需要修复什么haskell杂技?看不出我怎么能访问"blah".

haskell state-monad

-2
推荐指数
1
解决办法
55
查看次数