相关疑难解决方法(0)

"@"符号在引用Haskell中的列表时意味着什么?

我遇到了一段看起来像这样的Haskell代码:

ps@(p:pt)
Run Code Online (Sandbox Code Playgroud)

@在这种情况下,符号意味着什么?我似乎无法在Google上找到任何信息(遗憾的是很难在Google上搜索符号),而且我在Prelude文档中找不到该功能,所以我想它必须是某种语法糖.

syntax haskell

118
推荐指数
4
解决办法
3万
查看次数

'@'在Haskell中意味着什么?

我试过谷歌搜索但是做得很短.我通过阅读一些文章来进一步提高我的Haskell知识,并且我遇到了一个使用我以前从未见过的语法的文章.一个例子是:

reconstruct node@(Node a b c l r) parent@(Node b d le ri)
Run Code Online (Sandbox Code Playgroud)

我以前从未见过这些@.我试着在网上寻找答案但是很短暂.这只是一种嵌入标签以帮助使事情更清晰,或者它们对代码产生实际影响的方法吗?

haskell at-sign

8
推荐指数
2
解决办法
3554
查看次数

在子句标题中使用 vars 进行解构(Prolog)

我目前正在使用 SWI-Prolog 编写一些代码。当我多年前使用 Prolog 时,我可以发誓我能够在子句标题中将变量名称设置为“解构”,但现在它似乎对我来说不能正常工作(至少在 SWI-Prolog 中)。

玩具愚蠢的例子:

    example(X = [Row|Rows]) :-
      do_something_with_x(X), 
      do_something_with_row(Row),
      ...
Run Code Online (Sandbox Code Playgroud)

我想将它称为 egexample( [1,2,3] )并且我希望两者都X[Row|Rows]同一个谓词的参数匹配,即[1,2,3]谓词主体中的第一个参数(此处为)。

有谁知道这是否可能?

prolog pattern-matching

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

标签 统计

haskell ×2

at-sign ×1

pattern-matching ×1

prolog ×1

syntax ×1