【发布时间】:2017-04-10 12:53:58
【问题描述】:
在 Haskell 中(在 Prolog / Erlang 中非常相似),我们可以在列表上定义一个长度函数:
length [] = 0
length (x:xs) = 1 + length xs
在 Rascal 中,我能够使用以下方法创建这样的定义:
int length([]) = 0;
int length([x,xs*]) = 1 + length(xs);
“*”在长度的递归大小写的右侧消失。我知道这可能存在一个原因,但我无法弄清楚。有没有更好的方法来使用 Rascal 中的模式匹配在列表上定义递归函数?
【问题讨论】: