applicative

    0熱度

    1回答

    我一直在考慮下面的一段代碼,我想圍繞我的頭: data MyExample e i = MyExample (CustomMonad e i) | forall b. MyExample e b :>>= (b -> CustomMonad e b) | forall b. (MyExample e (b -> a)) :<*> (MyExample e b) | f

    1熱度

    1回答

    下面是我的方法簽名和定義階 def accumulate[T[_]: Traversable, O: Monoid, A]: (A => O) => T[A] => O = fao => ta => (implicitly[Traversable[T]].traverse[({type f[X] = Acc[O, X]})#f, A, O](ta)(a => Acc(fao(

    4熱度

    1回答

    我有一個關於重構Parsec代碼使用Applicative接口的問題。假設我有使用單子接口這樣的解析器: filePath0 :: GenParser Char st Info filePath0 = do optional (string "./") r <- artist slash l <- album slash t <- tr

    4熱度

    2回答

    我有這種類型的工作,基本上是Kleisli箭頭: {-# language DeriveFunctor #-} data Plan m i o = Plan (i -> m o) deriving Functor instance (Monad m) => Applicative (Plan m i) where pure x = Plan (\_ -> pure x)

    3熱度

    1回答

    我對coq很新穎,迄今爲止我設法證明了我也可以通過手工證明的東西。所以當我遇到Selection monad並決定在haskell中實現它時,我認爲這將是一個很好的練習,但我被卡住了。有人能提供一個coq證明的例子,說明選擇monad是應用程序和monad嗎?這是一個函數的haskell實現。 newtype Sel r a = Sel { runSel :: (a -> r) -> a }

    1熱度

    1回答

    我想這個Applicative validation syntax例如轉換成Scalaz 7 +無形2.0 //for jupyter-scala kernel //classpath.add("org.scalaz" %% "scalaz-core" % "7.2.7") //classpath.add("com.chuusai" %% "shapeless" % "2.3.2") ca

    1熱度

    1回答

    在GHCi中,當我鍵入pure 2時,它返回2;或pure "aa"返回"aa"。我想知道這個應用實例是如何由GHCi解決2或「aa」的。

    3熱度

    2回答

    從validation包的文檔: 的AccValidation數據類型是同構的Either,但是具有在誤差累積側的Applicative一個實例。也就是說,如果遇到兩個(或更多)錯誤,則會使用Semigroup操作附加它們。 作爲這個Applicative實例的結果,沒有相應的Bind或Monad實例。 AccValidation就是一個例子,「一個不是單子的應用函子」。 這並不明顯,爲什麼這是一

    3熱度

    1回答

    AFAIK新增加的GHC8之一是ApplicativeDo語言的擴展,這desugars的DO-符號到相應Applicative方法(<$>,<*>)如果可能的話。我有以下問題。 它是如何決定是否可以解除Applicative方法?據我所知,它會進行依賴性檢查(如果後者取決於前者的結果)來決定資格。還有其他標準嗎? 雖然這種添加使得應用代碼更易於閱讀沒有任何Monad實例(可能?)的類。但是對於既

    3熱度

    1回答

    我目前正在爲我的謹慎數學課程開發一個個人項目,並試圖在Haskell中形式化集合論。我們課堂中定義的一個集合是特定宇宙元素的任意嵌套。我選擇了代表這是事實上的標準嵌套列表: data Set a where Empty :: Set a Elem :: a -> Set a -> Set a Set :: Set a -> Set a -> Set a 作爲一個懶