gpt4 book ai didi

Idris !-notation 的 Haskell 版本(bang notation)

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

我最近有幸学习了一点 Idris,我发现非常方便的一件事是 ! -notation ,这让我缩短了 do block 中的一元代码,例如

a' <- a
b' <- b
c' <- c
someFunction a' b' c'
更好的
someFunction !a !b !c
现在,当我在 Haskell 中编写代码时,我正在寻找类似的东西,但据我所知它不存在(而且 bang 字符显然已经用于严格的模式匹配)。有什么办法可以避免在 do block 中出现一堆琐碎的左箭头?也许是一个添加重写规则的扩展,或者类似的东西?

最佳答案

因为每个 monad 都是一个 Applicative (使用 GHC >= 7.10)我们可以写

someFunction <$> a <*> b <*> c

请注意,如果 someFunction返回 m T 类型的一元值, 以上将返回 m (m T) ,这可能不是我们想要的(正如@pigworker 在下面指出的那样)。但是我们可以 join两层一起:
join $ someFunction <$> a <*> b <*> c

关于Idris !-notation 的 Haskell 版本(bang notation),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33219871/

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