gpt4 book ai didi

haskell - 我可以从模式同义词中捕获值吗?

转载 作者:行者123 更新时间:2023-12-01 08:46:04 25 4
gpt4 key购买 nike

假设一个模式:

pattern P :: [Int]
pattern P <- a:_

我可以以某种方式在函数f中使用a吗?

f :: [Int] -> Int
f P = a

上面的代码产生Not in scope: 'a'的错误。

最佳答案

好吧,这有点尴尬,但我发现这样做很有效:

{-# LANGUAGE PatternSynonyms #-}

pattern P :: Int -> [Int]
pattern P a <- a:_

f :: [Int] -> Int
f (P b) = b

main = print $ f [42]

这里的关键点是模式参数变得显式,但随后它也作为将被匹配的 b 模式1 传递。我错过了这一难题。

缺点是显然你需要枚举你想使用的模式的所有部分。


1当然这个还是可以叫a的,我只是换个名字来说明一下。

关于haskell - 我可以从模式同义词中捕获值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53520272/

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