小编Dil*_*war的帖子

关于Haskell中函数组合的困惑

请考虑ghci中的以下函数定义.

let myF = sin . cos . sum 
Run Code Online (Sandbox Code Playgroud)

哪里,.代表两个函数的组合(右关联).我可以打电话

myF [3.14, 3.14]
Run Code Online (Sandbox Code Playgroud)

它给了我想要的结果.显然,它将list [3.14,3.14]传递给函数'sum',并将其'result'传递给cos,依此类推.但是,如果我在翻译中这样做

let myF y = sin . cos . sum y 
Run Code Online (Sandbox Code Playgroud)

要么

let myF y = sin . cos (sum y) 
Run Code Online (Sandbox Code Playgroud)

然后我遇到了麻烦.将此修改为以下给出了我期望的结果.

let myF y = sin . cos $ sum y 
Run Code Online (Sandbox Code Playgroud)

要么

let myF y = sin . cos . sum $ y 
Run Code Online (Sandbox Code Playgroud)

(.)的类型表明下面的形式应该没有问题,因为'sum y'也是一个函数(不是吗?后来所有的东西都是Haskell中的一个函数?)

let myF y = sin . cos . sum y -- this should work?
Run Code Online (Sandbox Code Playgroud)

更有趣的是,我可以使用两个(或许多)参数(想想将列表[3.14,3.14]作为两个参数x和y),我必须写下面的内容

let (myF x) y = …
Run Code Online (Sandbox Code Playgroud)

haskell pointfree function-composition

5
推荐指数
2
解决办法
497
查看次数

指向向量的结构

以下程序看起来对我很好.但我无法编译.

#include    <iostream>
#include    <vector>
using namespace std;

int main()
{
    struct a
    {
        int i;
        int j;
    };


    std::vector<a*> vecA;

    a* pA = new a;

    pA->i = 4;
    pA->j = 9;

    vecA.push_back(pA);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它会产生以下错误.

struct_update.cc: In function ‘int main()’:
struct_update.cc:32:19: error: template argument for ‘template<class _Alloc> class std::allocator’ uses local type ‘main()::a*’
struct_update.cc:32:19: error:   trying to instantiate ‘template<class _Alloc> class std::allocator’
struct_update.cc:32:19: error: template argument 2 is invalid
struct_update.cc:32:25: error: invalid type in declaration before ‘;’ token …
Run Code Online (Sandbox Code Playgroud)

c++ struct pointers vector

5
推荐指数
2
解决办法
9213
查看次数

Haskell中Python urllib的等价物

在Haskell中是否有相当于Python的urllib库?我想登录课程主页(在Moodle上)并自动下载作业.

python haskell urllib2

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

关于c中静态函数指针的困惑

请查看以下代码段.它写于2005年,但我用最新的gcc编译它.

xln_merge_nodes_without_lindo(coeff, cand_node_array, match1_array, match2_array)
  sm_matrix *coeff;
  array_t *cand_node_array, *match1_array, *match2_array;
{ 
  node_t *n1, *n2;
  sm_row *row1, *row2;
  static sm_row *xln_merge_find_neighbor_of_row1_with_minimum_neighbors();

  while (TRUE) {
      row1 = sm_shortest_row(coeff);
      if (row1 == NIL (sm_row)) return;
      n1 = array_fetch(node_t *, cand_node_array, row1->row_num);
      row2 = xln_merge_find_neighbor_of_row1_with_minimum_neighbors(row1, coeff);
      n2 = array_fetch(node_t *, cand_node_array, row2->row_num);
      array_insert_last(node_t *, match1_array, n1);
      array_insert_last(node_t *, match2_array, n2);
      xln_merge_update_neighbor_info(coeff, row1, row2);
  }
}
Run Code Online (Sandbox Code Playgroud)

在编译时,它抱怨,

xln_merge.c:299:18: error: invalid storage class for function ‘xln_merge_find_neighbor_of_row1_with_minimum_neighbors’
Run Code Online (Sandbox Code Playgroud)

(xln_merger.c:299是定义开始后的第3行).

第3行函数定义似乎是一个函数声明(不是吗???).程序员是否打算编写函数指针(静态)?或者某些语法在c中已经发生了变化,为什么这不是编译.

此代码来自此处的sis

static function-pointers

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

如何避免 Imagemagick 在 gif 中转换帧的叠加

解决了

我有一堆标有 1.png 等的文件。我正在使用以下命令行生成 gif 动画:

convert -delay 20 *.png animation.gif
Run Code Online (Sandbox Code Playgroud)

但是帧会按顺序叠加。我没想到这种行为,可能有什么问题?

谢谢

编辑

正如 Mark 所指出的,我的 png 文件是透明的。

imagemagick gif imagemagick-convert

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

相当于诗歌中的`python setup.py develop`

使用setuptools,我可以使用python3 setup.py develop并且python3可以找到我的开发目录,而无需设置PYTHONPATH或运行安装。当前开发目录中的任何更改都可以立即使用,无需python3 setup.py develop/install再次运行。这在开发过程中节省了相当多的时间。

有诗的等价物吗?

更新有一个功能请求https://github.com/python-poetry/poetry/issues/1214

setuptools python-poetry

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

nim 相当于 Python 的 `sys.executable` 是什么?

以下是内容foo.py

import sys
print(sys.executable)
Run Code Online (Sandbox Code Playgroud)

当我执行此命令时,我可以获得调用该脚本的 Python 解释器的完整路径。

$ /mingw64/bin/python3.9.exe foo.py
/mingw64/bin/python3.9.exe
Run Code Online (Sandbox Code Playgroud)

如何在 nim( nimscript) 中做到这一点?

nim-lang

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

LEDA图v/s Boost图库

我想要效率,如果效率(= 0.9*速度+0.1*其他)很高,我愿意自己编写代码.如果我要在LEDA图形或Boost图形之间进行选择,我应该选择哪一个?

我的算法非常耗时(有些甚至是非多项式的,在大图上工作).

boost-graph leda

4
推荐指数
2
解决办法
2297
查看次数

`#define`是c ++源代码中的一个非常大的数字

嗯,问题并不像听起来那么愚蠢.

我正在使用C++ 11 <array>并想要声明一个这样的数组:

array<int, MAX_ARR_SIZE> myArr;
Run Code Online (Sandbox Code Playgroud)

MAX_ARR_SIZE是在头文件中被定义,并且可以是非常大的,即10 ^ 13.目前我正在打字,就像一个学龄前的孩子

 #define MAX_ARR_SIZE 1000000000000000
Run Code Online (Sandbox Code Playgroud)

如果别无选择,我可以忍受它.我不能pow(10, 13)在这里使用,因为它无法在编译时进行评估; 数组初始化将失败.我不知道有任何类型的简写.

c++ arrays compile-time c++11

4
推荐指数
2
解决办法
1104
查看次数

php-7 中的“2020 年 1 月的第一个星期三”与“2020 年 1 月的第一个星期三”

今天我遇到了一个同事在我写的应用程序中报告的 PhP-7 中的一个奇怪的错误/功能。归结为以下几点。

考虑以下:

echo date('Y-m-d', strtotime('first thu of Jan 2020'));
echo '<br/>';
echo date('Y-m-d', strtotime('first thu Jan 2020'));
echo '<br/>';
echo date('Y-m-d', strtotime('first wed of Jan 2020'));
echo '<br/>';
echo date('Y-m-d', strtotime('first wed Jan 2020'));
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我看到以下内容:

2020-01-02
2020-01-02
2020-01-01
2020-01-08
Run Code Online (Sandbox Code Playgroud)

奇怪的是,输出的第 3 行和第 4 行是不同的。为什么?of在这种情况下是错误还是必须使用?

php datetime php-7

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