lifting

    4熱度

    1回答

    當我這樣定義函數中ghci的: > :m Control.Monad > let f n = n+1 > let g = liftM f 他們工作得很好: > g $ Just 2 > Just 3 > g $ [1,2] > [2,3] 但是,當我定義文件相同的功能(probl.hs): import Control.Monad f :: Integer -> Intege

    2熱度

    1回答

    我使用在其中一個模塊中定義的功能if'而不是內置的if-then-else構造。它是平凡的定義,工作得很好。 但是,在代碼中有一個地方需要將它應用於monad值(我的情況爲IO),即類型簽名應該看起來有點像IO Bool -> IO a -> IO a -> IO a。當然,我試圖解除它。 if' <$> mb <*> action1 <*> action2 但是,當我試圖評估表達式,我沒有得

    3熱度

    1回答

    我只是在研究真實世界中的單核變壓器Haskell。 這本書說,爲了製造一個monad變壓器,你需要把它變成MonadTrans類型的一個實例。 所以本書定義了一臺新的變壓器,即MaybeT m a變壓器。 他們定義的monadTrans型類新變壓器: instance MonadTrans MaybeT where lift m = MaybeT (Just `liftM` m) 然

    0熱度

    1回答

    這就是我想要的: scala> var x:Int = 10 x: Int = 10 scala> var y:Int = 20 y: Int = 20 scala> val ret = q"return $x>$y" ret: universe.Return = return 10.$greater(20) scala> val result1 = toolbox.compil

    6熱度

    1回答

    我想將Haskell函數提升爲更高階的lambda微積分編碼。這幾乎是從Oleg的Typed Tagless Final編碼逐字記錄的。 class Lam r where emb :: a -> r a (^) :: r (r a -> r a) -> (r a -> r a) lam :: (r a -> r a) -> r (r a -> r a) inst

    0熱度

    1回答

    我正在閱讀有關Scala中提升方法演示的教程。下面是基本類的代碼: case object None extends Optional[Nothing] case class Presenter[+A](get: A) extends Optional[A] trait Optional[+A] { def map[B](f: A => B): Optional[B] = thi

    0熱度

    1回答

    我通常會聽到解除這個詞,當人們在談論map,fold或bind時,但基本上並不是每個高階函數都有某種提升? 爲什麼不能filter是電梯從a -> Bool到[a] -> [a],赫克甚至bool函數(型號if語句),可以被認爲是從電梯到a -> aBool -> a。如果它們不是,那麼爲什麼來自Applicative類型的ap被認爲是電梯? 如果重要的是從... a ...要... f a ..

    4熱度

    1回答

    我有,如IO上下文幾個數據類型: a :: IO String b :: IO FilePath c :: String -> IO String 欲把它們放在一起在一個數據對象像: data Configdata = Configdata String FilePath (String -> String) 所以我沒有得到自己的每個值了IO方面的,但剛出來的IO Configdata

    1熱度

    2回答

    考慮以下功能: foo = [1,2,3] >>= return . (*2) . (+1) 爲了更好的可讀性和邏輯,我想(*2)和(+1)移動我的純函數的返回的左側。我可以這樣實現這一點: infixr 9 <. (<.) :: (a -> b) -> (b -> c) -> (a -> c) (<.) f g = g . f bar = [1,2,3]

    3熱度

    1回答

    我正在閱讀關於單體變壓器在真實世界哈斯克爾。在以下示例中,堆棧頂部Writer頂部State頂部Reader頂部IO。 {-# Language GeneralizedNewtypeDeriving #-} import Control.Monad import Control.Monad.State import Control.Monad.Reader import Control.