我OpenSSH client (Beta)在 Windows 10 上添加了这个功能,所以我可以通过运行来调用它
ssh
Run Code Online (Sandbox Code Playgroud)
在命令行上。
然而,终端窗口(以及连接)在不活动时间过长时会冻结。我知道我会通过编辑~/.ssh/config文件在 Linux 上解决这个问题。在 Windows 上有等价物吗?
不幸的是,在尝试为OpenSSL安装手册页时,Perl会以某种方式遇到错误(例如OpenSSL_1_0_1g).因为我不需要它们 - 我想只使用OpenSSL作为C库,我想我可以通过完全跳过手册页的安装来绕过这个问题.
假设我有一个这种类型的函数:
once :: (a, b) -> Parser (a, b)
Run Code Online (Sandbox Code Playgroud)
现在,我想重复应用这个解析器(有点像 using >>=)并使用它的最后一个输出在下一次迭代中提供它。
使用类似的东西
sequence :: (a, b) -> Parser (a, b)
sequence inp = once inp >>= sequence
Run Code Online (Sandbox Code Playgroud)
为第一个解析器指定初始值是行不通的,因为它会一直持续到不可避免地失败为止。相反,我希望它在失败时停止(有点像many)。
尝试使用修复它try会使计算变得过于复杂(在每次迭代中添加尝试)。
sequence :: (a, b) -> Parser (a, b)
sequence inp = try (once inp >>= sequence) <|> pure inp
Run Code Online (Sandbox Code Playgroud)
换句话说,我正在寻找一个类似于foldl解析器的函数,当下一个解析器失败时该函数会停止。
在输入上,我有一个有符号的字节数组barr(通常是小尾数,但这可能并不重要)和一个f要相乘的浮点数barr。
我的方法是转换barr为整数val(使用int.from_bytes函数),将其相乘,执行溢出检查并val在需要时“裁剪”相乘,然后将其转换回字节数组。
def multiply(barr, f):
val = int.from_bytes(barr, byteorder='little', signed=True)
val *= f
val = int (val)
val = cropInt(val, bitLen = barr.__len__()*8)
barr = val.to_bytes(barr.__len__(), byteorder='little', signed=True)
return barr
def cropInt(integer, bitLen, signed = True):
maxValue = (2**(bitLen-1)-1) if signed else (2**(bitLen)-1)
minValue = -maxValue-1 if signed else 0
if integer > maxValue:
integer = maxValue
if integer < minValue:
integer = minValue
return integer …Run Code Online (Sandbox Code Playgroud) 假设我具有以下数据类型:
data Zinf = NegInf | Z Integer | PosInf deriving (Eq, Ord, Show)
Run Code Online (Sandbox Code Playgroud)
Num因为所有必需的操作都已定义,所以它也是。例如PosInf + 1,当我键入内容时,解释会返回PosInf。
现在,我导出另一种数据类型:
data Interval = Simple Integer | Complicated Zinf Zinf deriving (Eq, Show)
Run Code Online (Sandbox Code Playgroud)
现在,由于Zinf也是Num,我可以写下以下内容:
(Z 3) + 4
Run Code Online (Sandbox Code Playgroud)
我得到
(Z 7)
Run Code Online (Sandbox Code Playgroud)
我也可以测试
(Z 3) + 6 == 9
Run Code Online (Sandbox Code Playgroud)
然后解释返回True。
我也可以写Complicated 3 (6*7)得到Complicated (Z 3) (Z 42)。
最后,我使用以下“间隔”数据类型创建树:
data BinTree a = Empty | Node a (BinTree a) (BinTree a) deriving …Run Code Online (Sandbox Code Playgroud)