()的定义

问题描述 投票:0回答:1

我可以假设以下内容适用于所有应用程序吗?

f1 <* f2 = fmap const f1 <*> f2 

 f1 *> f2 = fmap (flip const ) f1  <*> f2  
haskell applicative
1个回答
0
投票

是。从the documentation for Applicative

其他方法具有以下默认定义,可以用等效的专门实现替代:

  • Applicative
  • u *> v = (id <$ u) <*> v

那里的关键词是“等价的”。由于您的定义等同于那些定义*,因此它们的定义也必须等同于所有合法应用程序的定义。

*如果您不确信自己的定义与那些定义相同,请参考以下提示:

  • u <* v = liftA2 const u v
  • fmap f x = f <$> x
  • liftA2 f x y = f <$> x <*> y
  • flip const = const id
© www.soinside.com 2019 - 2024. All rights reserved.