小编lab*_*nth的帖子

在Haskell中键入签名

我的问题是关于类型签名.

以下代码符合:

data Vector a = Vector a a a deriving (Show) 
vMult :: (Num a) => Vector a -> a -> Vector a 
(Vector i j k) `vMult` m = Vector (i*m) (j*m) (k*m)
Run Code Online (Sandbox Code Playgroud)

不过,我不明白为什么有以下取代上述类型签名(上2号线)工作:

vMult :: (Num a) => Vector a -> Num -> Vector a  
Run Code Online (Sandbox Code Playgroud)

我的理解是,既然m是类型Num(例如,数量8),由于i, j, kNum为好,应该与计算没有问题Vector (i*m) (j*m) (k*m).

请理解我的理解.

haskell

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

通过引用传递pandas DataFrame

我的问题是关于 Pandas DataFrame 在通过引用传递时的不变性。考虑以下代码:

import pandas as pd

def foo(df1, df2):

    df1['B'] = 1
    df1 = df1.join(df2['C'], how='inner')

    return()

def main(argv = None):

    # Create DataFrames. 
    df1 = pd.DataFrame(range(0,10,2), columns=['A'])
    df2 = pd.DataFrame(range(1,11,2), columns=['C'])

    foo(df1, df2)    # Pass df1 and df2 by reference.

    print df1

    return(0)

if __name__ == '__main__':
    status = main()
    sys.exit(status)
Run Code Online (Sandbox Code Playgroud)

输出是

   A  B  
0  0  1
1  2  1
2  4  1
3  6  1
4  8  1
Run Code Online (Sandbox Code Playgroud)

并不是

   A  B  C
0  0  1  1 …
Run Code Online (Sandbox Code Playgroud)

python immutability pass-by-reference dataframe pandas

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