簡體   English   中英

忽略 :: 應用 f => fa -> f ()

[英]ignore :: Applicative f => f a -> f ()

我需要帶有此簽名的任何函數:

ignore :: Applicative f => f a -> f ()

有人可以指出我正確的方向嗎?

謝謝!

就像@Amadan 在評論中所說的那樣,您可以使用Hoogle搜索引擎輕松找到此類問題的答案。 不過,您可以通過以下幾種方法執行此操作:

  1. 您可以觀察到您需要的是映射到常量值 ( () )。 在 Haskell 中,這是const () 你現在要做的就是修改這個函數,讓它影響(應用)函子內的值。 什么值使函數成為函子上的函數? fmap 將所有這些放在一起,您將得到解決方案 #1: fmap $ const ()

  2. Prelude 中有一個函數接受一個函子並將其值替換為另一個: (<$) :: Functor f => a -> fb -> fa 這里, a() ,所以你得到解決方案#2: () <$

  3. 使用 Hoogle,你會從Data.FunctorControl.Monad獲得void 當您有一個 monadic 操作並希望通過使用()將其關閉來忽略其結果時,此函數也很有用。

  4. 用 lambda 冗長的方式寫出來(就像你在評論中所做的那樣): ignore f = (\\_ -> ()) <$> f ,或者只是ignore = fmap $ \\_ -> ()

fa變成fb用於Applicative f怎么樣,你知道有什么可以幫助你的嗎?

在保持“外部”完整的同時改變“內部”值的東西?

提示:應用程序也是函子。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM