小编tin*_*lyx的帖子

简单的C++交换功能

为什么如果我有这样的函数,交换两个数字,它不起作用[swap],(我知道我可以通过在原型中声明指针,然后传递相应变量的地址来实现main()),但适用于数组,无需传递指针和地址.

不行

void num_exchange(int m, int n);

int main(){

int num1 = 5;
int num2 = 6;

num_exchange(num1 , num2 );

cout << "num1 =" << num1 << endl;
cout << "num2 =" << num2 << endl;

return 0;
}

void num_exchange(int m, int n){
int temp;
temp = m;
m = n;
n = temp;
}
Run Code Online (Sandbox Code Playgroud)

作品

void arr_exchange(int [], int);

int main(){


int n[7] = { 0, 0, 0, 0, 0, 0, 0 };

arr_exchange(n, 7);
for (int …
Run Code Online (Sandbox Code Playgroud)

c++ arrays pointers

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

如何在bash中遍历字母表中的前n个字母

我知道要循环使用字母表,可以做到

for c in {a..z};  do   something;  done
Run Code Online (Sandbox Code Playgroud)

我的问题是,我如何遍历第一个n字母(例如构建一个字符串),其中n是命令行中给出的变量/参数.

我搜索了SO,并且只找到了为数字做这个的答案,例如使用C风格的for循环或seq(参见例如如何迭代Bash中由变量定义的一系列数字?).我没有seq在我的环境中.

谢谢.

bash loops

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

我们怎么知道所有Coq构造函数都是单射的和不相交的?

根据这个课程,所有构造函数(对于归纳类型)都是单射的和不相交的:

...类似的原则适用于所有归纳定义的类型:所有构造函数都是单射的,并且由不同构造函数构建的值永远不会相等.对于列表,cons构造函数是单射的,nil与每个非空列表不同.对于布尔,真假都是不平等的.

(以及inversion基于这种假设的策略)

我只是想知道我们怎么知道这个假设成立了?

我们怎么知道,例如,我们不能基于定义自然数

1)一个继承者,也许是像这样的"双"构造函数:

Inductive num: Type :=
   | O : num
   | S : num -> num
   | D : num -> num.
Run Code Online (Sandbox Code Playgroud)

2)一些plus功能,以便2通过两个不同的序列/路由构造函数可以达到一个数字,S (S O)并且D (S O)

Coq的机制是什么,以确保上述内容永远不会发生?

PS我不是建议上面的num例子是可能的.我只是想知道是什么让它变得不可能.

谢谢

constructor coq injective-function

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

如何在Haskell中添加两个像matlab这样的列表?

我想知道是否有可能编写一个Haskell添加运算符,它可以处理两个数字,两个数字列表,两个数字矩阵,......等等.也就是说,是否可以定义<+>以下所有内容?:

1 <+> 2 = 3
[1] <+> [2] = [3]
[[1]] <+> [[2]] = [[3]]
...
Run Code Online (Sandbox Code Playgroud)

我知道,在Haskell中添加列表的惯用方法是什么?,我们可以做+a,zipWith (+)[a].可能zipWith (zipWith (+))[[a]]沿着同一条线,等等......

但是可以使用一个运算符(如Matlab所能)使用类型类或Haskell的其他功能来完成吗?

我知道这是合成糖,但如果可能,它会很甜.

- 更新 -

我看到使用(Num a)@ DanielWagner的答案中所解释的可能是有问题的,并且最好Integer, Double为基本情况单独定义它等.

仅仅是为了记录,我只是按照建议尝试:

{-# LANGUAGE FlexibleInstances, UndecidableInstances #-}
class Additive a where (<+>) :: a -> a -> a
instance Num a => Additive a where (<+>) = (+)
instance Additive a …
Run Code Online (Sandbox Code Playgroud)

matlab haskell

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

在Haskell中更改函数的返回类型?

是否有一种简洁的方法来更改函数的返回类型?

考虑例如 comparingData.Ord.它返回一个Ordering.然而,我只对这两个项目是否相同感兴趣.所以我需要将结果转换Ordering为a Bool.

我能想到的一个直接的方法是:

isEqualOn f x y = if comparing f x y==EQ then True else False 
Run Code Online (Sandbox Code Playgroud)

(或isEqualOn f x y = comparing f x y==EQ在评论中指出).

是否有更多的组合方式来做到这一点(有点适应comparing或以无意义的方式编写它)而不必写出一切?理想情况下,我正在寻找适用于n-ary函数的东西.

- 更新 -

正如答案/评论所建议的那样,上面的具体例子(isEqualOn)可以使用标准on函数实现on (==).但是,我的问题是关于以组合/无意义的方式更改函数返回类型的一般技术,如评论中的SEC方法所示.

haskell

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

将字符串拆分为数组(每个字符) - Swift

我有一点问题.我想在一个字符数组中拆分一个String,在那里我可以处理每个字符.

例如:

"Hello"
    arrayofstring[0] ->H
    arrayofstring[1] ->e
    arrayofstring[2] ->l
    arrayofstring[3] ->l
    arrayofstring[4] ->o
Run Code Online (Sandbox Code Playgroud)

我感谢你的每一个帮助.

arrays string split character swift

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

PHP 如何检查 PDF 是否经过数字签名

我的 PHP 程序使用 生成 PDF TCPDF,然后:

  1. 用户下载PDF;
  2. 用户对 PDF 进行数字签名;
  3. 用户上传签名的PDF;

对于第 3 步,我想检查上传的文件是否经过数字签名。

更好的是检查上传的文件是否与程序在步骤 1 中生成的文件相同。

php pdf pdf-generation tcpdf

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

Coq中的方括号语法[|-Set]是什么?

我有时会在Coq中看到这种语法来表示某些类型/集合,例如在打印有关存在变量的信息时:

?T : [ |- Set]
?T0 : [ x : ?T |- Set ]
Run Code Online (Sandbox Code Playgroud)

我不知道如何搜索这种语法。

这是什么意思?

第一个与

? T : Set
Run Code Online (Sandbox Code Playgroud)

coq

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

如何将元组作为参数传递给 Lua 函数?

有没有办法将元组作为 Lua 函数的参数传递?

例如,我有一个返回多个值的函数

function f(a,b)  return b,a end
Run Code Online (Sandbox Code Playgroud)

我希望这个功能f被重复应用,所以我可以写:

f (f ... f(1,2))
Run Code Online (Sandbox Code Playgroud)

但是如果我需要将这个初始元组存储(1,2)为一个变量init呢?

f (f ... f(init))
Run Code Online (Sandbox Code Playgroud)

是否有支持?

根据这个答案,python 似乎将它与 splat 运算符一起使用*

lua tuples function

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

如何使用GHCi:在包含函数的带引号的字符串上设置args

我试图用GHCI并:set args进行main如下:

:set args "(\x -> x )"
Run Code Online (Sandbox Code Playgroud)

GHCi抱怨:

Couldn't read "\"(\\x -> x )\""as String
Run Code Online (Sandbox Code Playgroud)

我不明白为什么这不能被视为一个字符串.我可以不用引号:

:set args (\x -> x )
Run Code Online (Sandbox Code Playgroud)

但显然,这是不正确的,它将被解释为4个参数而不是1个,如下面的main函数所示.

import System.Environment

main = do
  args <- getArgs
  putStrLn $ show $ length args
Run Code Online (Sandbox Code Playgroud)

有关如何将其传递给GHCi的任何指示?(我可以从命令行将其传递给已编译的ghc代码.)

谢谢,

haskell ghci command-line-arguments

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