小编Bra*_*gle的帖子

用于返回递归闭包的函数签名

我试图实现一个返回递归闭包的函数.虽然我不知道如何在函数签名中表达它.这是Python中工作实现的示例代码

def counter(state):
    def handler(msg):
        if msg == 'inc':
            print state
            return counter(state + 1)

        if msg == 'dec':
            print state
            return counter(state - 1)
    return handler

c = counter(1)
for x in range(1000000):
    c = c('inc')
Run Code Online (Sandbox Code Playgroud)

和Rust的伪代码.

enum Msg {
    Inc,
    Dec
}

fn counter(state: Int) -> ? {
    move |msg| match msg {
        Msg::Inc => counter(state + 1),
        Msg::Dec => counter(state - 1),
    }
}
Run Code Online (Sandbox Code Playgroud)

recursion continuations closures types rust

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

如何解决我的GADT中的歧义

我有两个GADT用于建模SQL EDSL.为了让客户端面对api干净简单,我想OverloadedStrings用来将字符串文字转换为Column Selection.

因此,您只需输入即可

select ["a", "b"] $ from tbl
Run Code Online (Sandbox Code Playgroud)

代替

select [Column "a", Column "b"] $ from tbl
Run Code Online (Sandbox Code Playgroud)

问题是select允许Column Selections和Reductions允许执行聚合的查询.

mean :: Column Selection -> Column Reduction

select :: [Column a] -> Query b -> Query Selection
select [mean "a"] $ from tbl
Run Code Online (Sandbox Code Playgroud)

因此,在这种情况下,字符串是模糊的[Column a].但是select [mean "a"] $ from tbl有效,因为mean提供了必要的上下文来推断字符串文字是列选择.

任何人都可以推荐摆脱这种混乱的方法吗?

我目前的代码如下(省略了无关的实例)

{-# LANGUAGE 
    GADTs
  , RankNTypes
  , DataKinds
  , TypeFamilies
  , FlexibleContexts
  , FlexibleInstances …
Run Code Online (Sandbox Code Playgroud)

dsl haskell types gadt

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

将子命名空间的挂载传播到父命名空间?

如何将在子命名空间中创建的装载传播到父级?

细节

我正在尝试创建一个利用overlayfs允许写入只读目录的工具.棘手的是,我希望任何用户都能够在没有root权限的情况下使用它.因此我希望这可以通过mount命名空间来实现,前提是管理员已经挂载了一个共享目录,然后任何用户都应该能够在该父树命名空间可见的树下创建一个覆盖(因此任何用户都可以登录) shell可以看到覆盖挂载).

这是我尝试过的,但不起作用:

# admin creates a shared tree for users to mount under
sudo mkdir /overlays
# bind mount over itself with MS_REC | MS_SHARED
sudo mount --bind --rshared /overlays /overlays
Run Code Online (Sandbox Code Playgroud)

假设用户想要创建覆盖/some/readonly/dir,他们应该创建/overlays/user/{upper,work,mnt}.我希望他们能够在/overlays使用以下代码传播的目录下安装叠加层.

// user_overlay.c
#define _GNU_SOURCE                                                                                                                                                                                          
#include <sched.h>                                                                                                                                                                                           

#include <stdio.h>                                                                                                                                                                                           
#include <stdlib.h>                                                                                                                                                                                          
#include <signal.h>                                                                                                                                                                                          
#include <linux/capability.h>                                                                                                                                                                                
#include <sys/mount.h>                                                                                                                                                                                       
#include <sys/types.h>                                                                                                                                                                                       
#include <sys/wait.h>                                                                                                                                                                                        
#include <unistd.h>                                                                                                                                                                                          

int child(void *args)                                                                                                                                                                                        
{                                                                                                                                                                                                            
    pid_t p;                                                                                                                               
    p = mount("overlay", "/overlays/user/mnt", "overlay", 0, "lowerdir=/some/readonly/dir,upperdir=/overlays/user/upper,workdir=/overlays/user/work");                                                                           
    if (p …
Run Code Online (Sandbox Code Playgroud)

c linux filesystems linux-containers linux-namespaces

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

具有分组边界的 SciPy 优化

我正在尝试执行投资组合优化,返回使我的效用函数最大化的权重。我可以很好地完成这一部分,包括权重总和为 1 的约束,并且权重也给我一个目标风险。我还包括了 [0 <= weights <= 1] 的边界。此代码如下所示:

def rebalance(PortValue, port_rets, risk_tgt):
    #convert continuously compounded returns to simple returns
    Rt = np.exp(port_rets) - 1 
    covar = Rt.cov()

    def fitness(W):
        port_Rt = np.dot(Rt, W)
        port_rt = np.log(1 + port_Rt)
        q95 = Series(port_rt).quantile(.05)
        cVaR = (port_rt[port_rt < q95] * sqrt(20)).mean() * PortValue
        mean_cVaR = (PortValue * (port_rt.mean() * 20)) / cVaR
        return -1 * mean_cVaR

    def solve_weights(W):
        import scipy.optimize as opt
        b_ = [(0.0, 1.0) for i in Rt.columns]
        c_ = …
Run Code Online (Sandbox Code Playgroud)

python optimization finance scipy pandas

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

具有无标记final的静态不变量

TL; DR如何使用无标记编码对GADT可能存在的静态不变量进行编码?

我正在构建一个类似SQL语言的dsl,其目标是完善一些粗略的边缘,键入安全性和次要查询优化.

在我的第一次传递中,我使用GADT来强制执行目标语言将执行的几个限制,但输出在大多数情况下是垃圾.即select语句中的混合长度列

select mean x, x by date, time from tbl
Run Code Online (Sandbox Code Playgroud)

我通过将列标记为选择(向量)或减少(标量)来阻止这些混合选择,因此编译器可以静态地阻止这些操作.但是,我从未弄清楚如何阻止从群组中进行选择.

刮开的下一个功能是将类型检查添加到列算术运算中,我的第一个坏主意是添加另一个幻像类型来承载列类型.这不会工作,因为它会破坏我的Schema类型,我不能再选择混合类型的列.这使我认为无标记嵌入Columns可能是合适的,因为我可以根据上下文获得适当的表示(类型,大小等).缺点是这似乎推迟了我想编码的所有不变量直到运行时.为了说明这一点,这是addGADT和无标签方法中的粗略伪代码.

-- | GADT
add :: Column ty s1 -> Column ty s2
add a b = BinExpr Add a b

-- | Tagless
add :: Column c => c -> c -> c
add a b | (a :: ColType) == (b :: ColType) = binexpr Add a b
        | TypeMismatch a b
Run Code Online (Sandbox Code Playgroud)

GADT方法还具有能够指定Num ty => ...防止在字符串列上添加的优点.这种类型的问题似乎会传播到我的所有代码中,因为我现在必须遵循运行时检查以确保防止Select混合大小的s或Group …

sql dsl haskell types

6
推荐指数
0
解决办法
196
查看次数

在 python 中滚动 idxmax() ?

我有一个 python DataFrame,其中包含一些财务数据,我正在尝试为其创建一些技术指标。我试图弄清楚如何使用移动窗口函数来加速该过程,而不是逐个元素地进行。对于每个索引,我想返回过去 30 天的最大索引。我已经实现了一个逐个元素的解决方案,但正如你可以想象的那样,它非常慢。

    for s_sym in ls_symbols:
        for i in range(refresh, len(ldt_timestamps)):
            #Aroon-Up = ((period - Days Since High)/period) x 100 Aroon-Down = ((period - Days Since Low)/peiod) x 100'''
            whrmax = df_close[s_sym].ix[ldt_timestamps[i-uplen:i]].idxmax()
            maxaway = (df_close[s_sym].ix[whrmax : ldt_timestamps[i-1]]).count()
            aroonup = ((uplen - maxaway) / uplen ) * 100

            whrmin = df_close[s_sym].ix[ldt_timestamps[i-dnlen:i]].idxmin()
            minaway = df_close[s_sym].ix[whrmin : ldt_timestamps[i-1]].count()
            aroondn = ((dnlen - minaway) / dnlen ) * 100
Run Code Online (Sandbox Code Playgroud)

如何创建自定义滚动窗口函数?

python finance time-series algorithmic-trading pandas

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

自定义CSS颜色叠加

我正在尝试为公司徽标编写一些CSS,这是对公司服务器上当前jpg的相当准确的描述.除了徽标上的一些颜色叠加外,它非常基本.

我的问题是:这甚至可能吗?如果是这样我怎么能这样做

请不要猛击,我是一个总的菜鸟,我的第一行html是大约一个星期前...

这是我的标记

<html>

<head>
    <meta charset="utf-8"/>
    <title>

    </title>
    <link rel="stylesheet" href="css/stylesheet.css"
</head>
<style contenteditable="">
#infinity {
position: absolute;
width: 212px;
height: 100px;
 -webkit-transform: rotate(-45deg);
   -moz-transform: rotate(-45deg);
    -ms-transform: rotate(-45deg);
     -o-transform: rotate(-45deg);
        transform: rotate(-45deg);
}

 #infinity:before,
#infinity:after {
content: "";
position: absolute;
top: 0;
left: 0;
width: 60px;
height: 60px;    
border: 15px solid;
-moz-border-radius: 50px 50px 0 50px;
     border-radius: 50px 50px 0 50px;
-webkit-transform: rotate(-45deg);
   -moz-transform: rotate(-45deg);
    -ms-transform: rotate(-45deg);
     -o-transform: rotate(-45deg);
        transform: rotate(-45deg);
}
#infinity:before{
color: #ADB2B3;
} …
Run Code Online (Sandbox Code Playgroud)

html css shapes graphical-logo css-shapes

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