小编Won*_*Hau的帖子

Deno 如何生成子进程并与之通信?

假设我有 2 个脚本,father.ts 和 child.ts,我如何从father.ts 生成child.ts 并定期从father.ts 向child.ts 发送消息?

deno

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

如何在 Rust 中划分结果向量?

基本上,我正在寻找Rust 中的partitionEithers等效项,即转换Vec<Result<A, B>>Result<Vec<A>, Vec<B>>.

我知道我可以通过使用将 a 转换Vec<Result<A, B>>为,但是当我尝试时,我会收到一条错误消息,指出缺少此类实现。Result<Vec<A>, B>collect::<Result<Vec<A>, B>>collect::<Result<Vec<A>, Vec<B>>>

我也知道这可以使用突变来完成,但我想知道是否有任何我可以研究的不可变替代方案?

rust

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

Is it possible to mark a variable such that it will only be used once?

Consider the following code:

const a = initialValue()
const b = f(a)
const c = g(b)
Run Code Online (Sandbox Code Playgroud)

I want to do something such that when a is being referenced the second time, it will be a compile error.

const d = h(a) // Compile error: `a` can be only referenced once
Run Code Online (Sandbox Code Playgroud)

I need this to prevent faulty value derivation from variables that I'm not supposed to use anymore.

Thus, I'm wondering if this is possible in TypeScript (during compile-time)? If not …

typescript

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

如何在 Deno 中获取命令的输出?

例如,假设我有以下代码:

Deno.run({cmd: ['echo', 'hello']})
Run Code Online (Sandbox Code Playgroud)

如何收集该命令的输出hello

deno

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

如何仅使用一个命令在 Neovim 的新选项卡中打开终端而无需重新映射?

自 2019 年以来,Vim 引入了一个名为 的新命令:terminal,该命令允许用户在 Vim 内打开终端。

要在新选项卡中打开它,我必须输入两个命令:

:tabnew
Run Code Online (Sandbox Code Playgroud)
:terminal
Run Code Online (Sandbox Code Playgroud)

是否有一种单一命令的方式可以达到相同的目的?

编辑:我知道这个类似的问题,但接受的答案已经过时了。

编辑 2:这可能是与 Neovim 相关的错误。

vim neovim

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

我怎样才能拥有一个接受可变引用的属性,该引用将比其自身寿命更长?

基本上我有这个结构(省略了不必要的细节):

struct Environment<'a> {
  parent: Option<&'a mut Environment<'a>>
}
Run Code Online (Sandbox Code Playgroud)

这个结构实际上不是我想要的,因为我希望parent引用比持有引用的结构更长寿。

我可以想象这可以通过更高级别的生命周期量化来实现,例如:

struct Environment {
  parent: <'a> Option<&'a mut Environment>
}
Run Code Online (Sandbox Code Playgroud)

但显然上面的代码不起作用(至少在 rustc 1.44 之前)。

我需要这个的原因是因为我正在尝试实现可以​​处理以下(示例)代码的类型检查器:

let x = 1  // parent environment
let f(y) = {
  // current environment
  x + y
}
Run Code Online (Sandbox Code Playgroud)

因此,当我在内部进行符号查找时f,例如x,我将首先在当前环境中进行查找,如果未找到,将在父环境中进行递归查找。内部完成类型检查后f, 的环境f将被丢弃,但父环境仍应保留,以便下一条语句可以进行类型检查。

希望这足够清楚地说明为什么我需要parent引用来超过持有它的结构体。

回顾一下这个问题:如何在一个结构中声明一个属性,该属性可以保存一个可以比自身存活时间更长的自身类型的可变引用?如果这是不可能的,我可以查看哪些替代方案?

rust

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

如何在 Rust 中以最惯用的方式将 Option&lt;T&gt; 转换为 Option&lt;&amp;T&gt;?

假设我有一个x类型为 的值Option<T>,如何将其转换为Option<&T>
我尝试使用map

let result = x.map(|x| &x)
                       ^^ Error
Run Code Online (Sandbox Code Playgroud)

但我得到了错误:

cannot return reference to function parameter `x`
returns a reference to data owned by the current function
Run Code Online (Sandbox Code Playgroud)

rust

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

是否可以使用 TypeScript 中的映射类型创建可区分联合?

假设我有以下界面X

type X = {
  red: number, 
  blue: string
}
Run Code Online (Sandbox Code Playgroud)

是否可以使用映射类型构造联合类型Y?如果不是,是否可以用其他类型的类型级机制来构造它?

type Y = {
  kind: "red"
  payload: number
} | {
 kind: "blue"
 payload: string
}
Run Code Online (Sandbox Code Playgroud)

typescript

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

JavaScript `then` 和 Haskell `fmap` 一样吗?

在 JavaScript 中,Promises 有一个名为 的方法then,用于在成功的情况下解包结果,例如,

fetch("google.com").then(console.log)
Run Code Online (Sandbox Code Playgroud)

这个 Haskell 的教程中,我还发现了一个类似的东西fmap,例如,

fmap putStrLn (fetch "google.com")
Run Code Online (Sandbox Code Playgroud)

它们看起来非常相似,但我不确定它们是否等效。这就是为什么我想问他们是否是同一件事。

PS:“等效”一词应与 Curry-Howard Correspondence 等效。

javascript haskell functional-programming

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