我试过在前奏中使用以下代码片段:
*ExerciseMonad Control.Monad> :t fmap ((:) 3) []
Run Code Online (Sandbox Code Playgroud)
并得到一个空的结果[].
然后我将一个空列表转换为monad结构:
*ExerciseMonad Control.Monad> x = return []
*ExerciseMonad Control.Monad> :t x
x :: Monad m => m [t]
Run Code Online (Sandbox Code Playgroud)
返回的值包含在Monad结构中.
这似乎是一种魔力,我没有得到一个空列表:
*ExerciseMonad Control.Monad> fmap ((:) 3) x
[3]
Run Code Online (Sandbox Code Playgroud)
为什么我没有空列表?
我有以下实例实现:
newtype Constant a b =
Constant { getConstant :: a }
deriving (Eq, Ord, Show)
type TI a = Constant a
instance Functor (Constant a) where
fmap _ (Constant a) = Constant a
instance Foldable (Constant a) where
foldMap _ _ = mempty
Run Code Online (Sandbox Code Playgroud)
然后我试着跟随:
*ExerciseTraversable Data.Monoid> foldMap id (Constant (Sum 34))
()
Run Code Online (Sandbox Code Playgroud)
我确实期望Sum {getSum = 0}而不是().如何获得Sum {getSum = 0}结果?
我试图弄清楚如何mergeAll工作并创建了示例:
const clicks = Rx.Observable.interval(4000).map(()=> "first");
const higherOrder = clicks.map((ev) => Rx.Observable.interval(1000).map(() => "inner").take(10));
const firstOrder = higherOrder.mergeAll();
firstOrder.subscribe(x => console.log(x));
Run Code Online (Sandbox Code Playgroud)
它始终输出inner,first永不输出。打完电话后mergeAll()的clicks观察到的不再是相关的?
在更多示例中:
const input = document.getElementById("window");
const clicks = Rx.Observable.fromEvent(input, 'keyup').map(() => "Hello");
const interval = Rx.Observable.interval(4000);
const result = clicks.window(interval)
.map(win => {
return win.take(1);
})
.mergeAll(); // flatten the Observable-of-Observables
result.subscribe(x => console.log("Result " + x));
Run Code Online (Sandbox Code Playgroud)
在订阅时,我从外部可观察到的结果“结果Hello”而不是内部可观察到的结果。mergeAll在这种情况下扮演什么样的角色?
为什么win变量是一个实例observable不Hello?
请有人请给我一个例子
invmap :: (a -> b) -> (b -> a) -> f a -> f b
Run Code Online (Sandbox Code Playgroud)
什么是Invariant有益?
我定义了以下简单形式:
<form:SimpleForm id="SimpleFormChange354"
editable="true"
layout="ResponsiveGridLayout"
title="Address"
labelSpanXL="2"
labelSpanL="2"
labelSpanM="3"
labelSpanS="12"
adjustLabelSpan="false"
emptySpanXL="0"
emptySpanL="0"
emptySpanM="0"
emptySpanS="0"
columnsXL="2"
columnsL="2"
columnsM="1"
singleContainerFullSize="false"
>
<Label text="Name1"/>
<Input/>
<Label text="Name2"/>
<Input/>
<Label text="Name3"/>
<Input/>
</form:SimpleForm>
Run Code Online (Sandbox Code Playgroud)
如你看到的:
如何将红色标记的元素放置在Name1元素旁边?
使用构建项目后
"prod": "npm run mlbuild | npm run build"
Run Code Online (Sandbox Code Playgroud)
dist 文件夹如下所示:
但我失踪了config.json,favicon.ico而且keycloak.json。
期间如何将这些文件放入dist文件夹build?
我试过:
{
test: /\.(json)(\?v=\d+\.\d+\.\d+)?$/,
use: [{
loader: 'file-loader',
options: {
name: '[name].[ext]'
}
}]
}
Run Code Online (Sandbox Code Playgroud)
但我想,我不得不提到文件夹。
有人可以向我解释,为什么下面的代码是memoization:
fib_mem :: Int -> Integer
fib_mem = (map fib [0..] !!)
where fib 0 = 1
fib 1 = 1
fib n = fib_mem (n-2) + fib_mem (n-1)
Run Code Online (Sandbox Code Playgroud) 我想弄清楚,如何建立JSON在Haskell用下面的例子:
module Main where
import GHC.Exts
import Data.Aeson
import qualified Data.Text.Lazy.IO as T
import qualified Data.Text.Lazy.Encoding as T
val :: Value
val = Object $ fromList [
("numbers", Array $ fromList [Number 1, Number 2, Number 3]),
("boolean", Bool True) ]
main :: IO ()
main = T.putStrLn . T.decodeUtf8 . encode $ val
Run Code Online (Sandbox Code Playgroud)
当我尝试编译时,编译器抱怨:
• Couldn't match type ‘[Char]’ with ‘Data.Text.Internal.Text’
Expected type: Item Object
Actual type: ([Char], Value)
• In the expression: ("boolean", Bool …Run Code Online (Sandbox Code Playgroud) 我试图弄清楚如何读取以下类类型定义:
Prelude Data.Functor.Identity Control.Monad.Reader> :i ask
class Monad m => MonadReader r (m :: * -> *) | m -> r where
ask :: m r
...
Run Code Online (Sandbox Code Playgroud)
m是更高种类的类型,必须是monad。
但是什么m -> r意思呢?
尝试使用ask以下方法:
Prelude Data.Functor.Identity Control.Monad.Reader> ask "Hello"
"Hello"
Run Code Online (Sandbox Code Playgroud)
我为什么可以通过一个论点ask?查看类型签名:
ask :: m r
Run Code Online (Sandbox Code Playgroud)
我无法识别,可以将参数传递给ask。
我有以下代码,无法编译:
object PcpProtocol {
private type PcpKV = String
private val findPublicKey: List[PcpKV] => Either[String, Map[String, String]] = kv =>
kv
.filter(_.contains("PUBLIC:"))
.foldLeft(Left("Can not find the public key from SAP.")) { (_, a) =>
a.split(":").toList match {
case List(key, value) => Right(Map(key -> value))
}
}
}
Run Code Online (Sandbox Code Playgroud)
编译器抱怨:
type mismatch;
[error] found : scala.util.Right[Nothing,scala.collection.immutable.Map[String,String]]
[error] required: scala.util.Left[String,Nothing]
[error] case List(key, value) => Right(Map(key -> value))
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?