lifting

    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

    0熱度

    3回答

    說我有這個React類。這不是我正在渲染的主要組件。我怎麼能把我在這裏設置的狀態傳遞給父組件。 class Player extends React.Component { constructor(props) { super(props); this.state = { playerOneName: '' } this.s

    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

    3熱度

    1回答

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

    6熱度

    2回答

    我正在學習monad變壓器,我很困惑什麼時候使用電梯是必要的。 假設我有以下代碼(它沒有做任何有趣的事情,只是我可以用來演示的最簡單的東西)。 foo :: Int -> State Int Int foo x = do (`runContT` pure) $ do callCC $ \exit -> do when (odd x) $ do -- l

    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 ..

    3熱度

    2回答

    以下是兩個部分功能,預計執行sme任務,但以不同方式定義。 val pf1 : PartialFunction[String, String] = { case s : String if (s != null) => s.toUpperCase() } //> pf1 : PartialFunction[String,String] = <function1> val lift

    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]