gpt4 book ai didi

javascript - JavaScript 中的函数式编程风格模式匹配

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:10:16 26 4
gpt4 key购买 nike

我正在编写从函数式语言到 JS 的编译器。编译器将在浏览器中运行。我需要在 JS 中实现模式匹配机制,因为原始语言有一个。我找到了 SparklerZ .据我所知,Sparkler 无法在浏览器中执行,Z 也没有我需要的所有可能性。

所以我的语言有这样的语义:

count x []         <- 0
count x [ x : xs ] <- 1 + count x xs
count x [ y : xs ] <- count x xs

这是这段代码中发生的事情:

第一行是一个函数的定义,它有两个参数:一些变量 x 和空列表,并返回零。

第二行是一个函数的定义,它也有两个参数:一些变量x和list,它以x开头,返回1 + count(x, xs)

对于这个例子,我想生成这样的代码:

const count = (x, list) => {
match(x, list) => (
(x, []) => {...}
(x, [ x : xs ]) => {...}
(x, [ y : xs ]) => {...}
)
}

如何将这种模式匹配正确展开为ifsors

最佳答案

一般情况

有一个proposal for Pattern Matching in ECMAScript ,但截至 2018 年,它还处于非常早期的阶段。

目前,实现部分仅列出:

列举案例

使用destructuring assignment ,比如:

const count = list => {
const [x, ...xs] = list;
if (x === undefined) {
return 0;
} else if (xs === undefined) {
return 1;
} else {
return 1 + count(xs);
}
}

关于javascript - JavaScript 中的函数式编程风格模式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50452844/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com