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]