小编nnn*_*mmm的帖子

符号微分的递归方案

按照这个优秀系列的术语,让我们(1 + x^2 - 3x)^3用a 表示一个表达式Term Expr,其中数据类型如下:

data Expr a =
    Var
  | Const Int
  | Plus a a
  | Mul a a
  | Pow a Int
  deriving (Functor, Show, Eq)

data Term f = In { out :: f (Term f) }
Run Code Online (Sandbox Code Playgroud)

是否存在适合执行符号区分的递归方案?我觉得这几乎是一个专业的Futumorphism Term Expr,即futu deriveFutu适合的功能deriveFutu:

data CoAttr f a  
  = Automatic a
  | Manual (f (CoAttr f a))

futu :: Functor f => (a -> f (CoAttr …
Run Code Online (Sandbox Code Playgroud)

haskell recursion-schemes

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

Haskell:列表操作

我想编写一个接受输入列表并按以下方式操作的函数:

步骤1:将列表的第一个元素和列表的最后一个元素放在一个子列表中。

步骤2:获取列表的第二个元素和列表的倒数第二个元素,并将其放到下一个子列表中。

步骤3:获取列表的第三个元素和列表的倒数第三个元素,并将其放到下一个子列表中。

根据相同的方案继续此操作(获取n个元素的列表)...

如果输入列表的元素数为奇数,则将输入列表的n / 2个元素添加为输出列表的最后一个子列表。

例:

[1,2,3,4,5,6,7]

-- should be transformed to

[[1,7],[2,6],[3,5],[4]]
Run Code Online (Sandbox Code Playgroud)

我已经编写了一个函数,该函数接受列表的每两个元素并将其放到子列表中,我想知道这段代码是否可以帮助我解决上述问题:

g2 :: [a] -> [[a]]
g2 [] = []
g2 (x1:x2:xs) = [x1,x2]: g2 xs
g2 xs = [xs]
Run Code Online (Sandbox Code Playgroud)

haskell list

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

const fn 与内联属性

在下面的例子中,我相信当函数Struct::new被调用时,由于#[inline]属性的原因,它的主体将被内联(复制)到调用站点。这将导致生成更多代码和更慢的编译时间,但由于消除了函数调用,因此运行时性能更好。

impl Struct {
    #[inline]
    pub fn new() -> Self {
        // initialization code
    }
} 
Run Code Online (Sandbox Code Playgroud)

现在const fn在 Rust 上是稳定的。当有人将函数声明为 时const,它应该允许编译器在编译时对其进行评估。

impl Struct {
    pub const fn new() -> Self {
        // initialization code
    }
} 
Run Code Online (Sandbox Code Playgroud)

将函数声明为const并省略#[inline]属性是否提供与前一个示例中的代码相同的权衡(因为函数在编译时评估并且其结果“内联”到调用站点)?我们应该用 替换所有#[inline]属性const吗?如果它们不相同,它们之间的区别是什么?

inline compile-time-constant rust

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

使用 --call-stack fp 进行性能记录无法展开主函数

我有一个 C++ 测试程序,可以让 CPU 保持忙碌:

\n
#include <cstdint>\n#include <iostream>\n\n// Linear-feedback shift register\nuint64_t lfsr1(uint64_t max_ix)\n{\n    uint64_t start_state = 0xACE1u;  /* Any nonzero start state will work. */\n    uint64_t lfsr = start_state;\n    uint64_t bit;                    /* Must be 16-bit to allow bit<<15 later in the code */\n\n    for (uint64_t ix = 0; ix < max_ix; ++ix)\n    {   /* taps: 16 14 13 11; feedback polynomial: x^16 + x^14 + x^13 + x^11 + 1 */\n        bit = ((lfsr >> 0) ^ (lfsr >> …
Run Code Online (Sandbox Code Playgroud)

c++ glibc libc stack-unwinding perf

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

如何将不带引号的字符串转换为python数组?

在Python中是否可以转换用逗号分隔的原始字符串,例如

tt0099700,tt0096061,tt0118688,tt0120784
Run Code Online (Sandbox Code Playgroud)

到Python数组/列表?

这样的字符串作为变量在循环中row[i]

谢谢你的帮助。

python csv

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