我有一个真正的问题,派生类型,根本不了解,如何派生类型.
我定义了一个f具有以下实现的函数:
f x y z = x * y * z
Run Code Online (Sandbox Code Playgroud)
函数的类型签名f是:
f :: Num c => c -> c -> c -> c
Run Code Online (Sandbox Code Playgroud)
很简单吧?
现在,适用f于map和id功能,寻找的类型签名.
首先,让我们申请map f:
a -> b "The signature of the first argument of map
~ ~
c -> c -> c -> c "The signature of the f function
Run Code Online (Sandbox Code Playgroud)
你可以看到上面,我如何分离和获得类型相等,即a ~ c和b ~ c -> c -> c. …
我正在尝试使用dart隔离库来提高我的应用程序性能.
看下面的代码:
import 'dart:isolate';
import 'package:dbcrypt/dbcrypt.dart';
main() {
var pwConPort = new ReceivePort();
pwConPort.listen((data) {
print(data);
pwConPort.close();
}, onError: (err) {
print(err);
});
Isolate.spawn(generatePasswordConcurrency, pwConPort.sendPort);
}
void generatePasswordConcurrency(SendPort sendPort) {
sendPort.send(_generateHashPassword('Passsowr1222!'));
}
String _generateHashPassword(String password) {
var regex = new RegExp(r'^.*(?=.{7,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9]).*$');
if (!regex.hasMatch(password)) {
throw new StateError('Errors');
}
return new DBCrypt().hashpw(password, new DBCrypt().gensalt());
}
Run Code Online (Sandbox Code Playgroud)
一切正常但我只能传递一个静态密码,或者更好地说,我不知道,如何动态传递一些东西.在这里你可以看到,密码是硬编码的,但我想传递一个变量.
void generatePasswordConcurrency(SendPort sendPort) {
sendPort.send(_generateHashPassword('Passsowr1222!'));
}
Run Code Online (Sandbox Code Playgroud)
如果方法_generateHashPassword将抛出错误,我该如何处理此错误?我尝试从ReceivePort捕获listen方法的错误
pwConPort.listen((data) {
print(data);
pwConPort.close();
}, onError: (err) {
print(err);
});
Run Code Online (Sandbox Code Playgroud)
但仍然有未处理的异常消息.
Observatory listening on http://127.0.0.1:51433
in ShutdownIsolate: Unhandled …Run Code Online (Sandbox Code Playgroud) 我有以下代码片段:
def flatten([h|t]), do: [h] ++ flatten(t)
Run Code Online (Sandbox Code Playgroud)
我在fp世界中很新,想知道这是否是尾递归?
我想明白,为什么教会定义数字如下:
0 = ? f . ? x . x
1 = ? f . ? x . f x
2 = ? f . ? x . f f x
3 = ? f . ? x . f f f x
4 = ? f . ? x . f f f f x
Run Code Online (Sandbox Code Playgroud)
背后的逻辑是什么?
为什么0表示如下:
0 = ? f . ? x . x
Run Code Online (Sandbox Code Playgroud) 查看函数声明,例如:
myFoo :: Bool -> Bool
Run Code Online (Sandbox Code Playgroud)
我可以说,该函数myFoo有四种可能的唯一实现,因为函数类型是指数运算符,这里是上面案例的证明2^2 = 4:
myFoo1 :: Bool -> Bool
myFoo1 True = False
myFoo1 True = True
myFoo2 :: Bool -> Bool
myFoo2 False = False
myFoo2 False = True
Run Code Online (Sandbox Code Playgroud)
我如何进行以下数据声明:
data Quad =
One
| Two
| Three
| Four
deriving (Eq, Show)
Run Code Online (Sandbox Code Playgroud)
和以下功能:
funcQuad :: Quad -> Quad
Run Code Online (Sandbox Code Playgroud)
可能的实现是256(4^4).我无法想象它,有很多实现.
如何在不写出来的情况下进行证明?
我有以下类型定义:
newtype Flip f a b =
Flip (f b a) deriving (Eq, Show)
Run Code Online (Sandbox Code Playgroud)
Flip数据构造函数是否有一个或三个参数?
Consinder实施后:
data K a b = K a
newtype Flip f a b =
Flip (f b a) deriving (Eq, Show)
instance Functor (Flip K a) where
fmap f (Flip (K b)) = Flip (K (f b))
Run Code Online (Sandbox Code Playgroud)
是什么类型的(Flip K a)?
我正在尝试了解Product和Coproduct对应于以下图片:
副产品:
据我了解,ProductHaskell中的类型例如:
data Pair = P Int Double
Run Code Online (Sandbox Code Playgroud)
和Sum类型是:
data Pair = I Int | D Double
Run Code Online (Sandbox Code Playgroud)
如何理解Sum与Product类型有关的图像?
图片来自http://blog.higher-order.com/blog/2014/03/19/monoid-morphisms-products-coproducts/。
我有一个 Actor,每 2 秒产生一个NotUsed. 也许它没有任何意义,但仅用于测试目的。
import akka.NotUsed
import akka.actor.{Actor, ActorLogging, Props}
import akka.stream.{ActorMaterializer, KillSwitches}
import akka.stream.scaladsl.{Keep, Sink, Source}
import com.sweetsoft.FsmSystem.{Add, StartTicker, StopTicker}
import scala.concurrent.duration._
object AddActor {
def props: Props = Props(new AddActor)
}
final class AddActor extends Actor with ActorLogging {
implicit val materilizer = ActorMaterializer()
private val consumer: NotUsed => Unit = _ =>
context.parent ! Add
private val runnable = Source.tick(2.second, 2.second, NotUsed)
.named("Ticker")
.toMat(Sink.foreach(consumer))(Keep.both)
override def receive: Receive = {
case StartTicker =>
runnable.run() …Run Code Online (Sandbox Code Playgroud) 我有以下代码,但无法编译:
import java.time.Instant
import io.circe.{Decoder, Encoder}
import io.circe.generic.auto._
import io.circe.syntax._
trait SapHealth {}
case class SapHealthRejected(reason: String) extends SapHealth
case class SapHealthAccepted(sapId: String, requestedAt: Long) extends SapHealth
object SapHealth {
private val build: SapHealth = SapHealthAccepted(SapmockActor.system.name, Instant.now().getEpochSecond)
val create: String = build.asJson.noSpaces
implicit val encodeFieldType: Encoder[SapHealthAccepted] =
Encoder.forProduct2("sap-id", "requested_at")(SapHealthAccepted.unapply(_).get)
implicit val decodeFieldType: Decoder[SapHealthAccepted] =
Decoder.forProduct2("sap-id", "requested_at")(SapHealthAccepted.apply)
}
Run Code Online (Sandbox Code Playgroud)
编译器抱怨:
could not find implicit value for parameter encoder: io.circe.Encoder[com.sweetsoft.SapHealth]
[error] val create: String = build.asJson.noSpaces
Run Code Online (Sandbox Code Playgroud)
我缺少什么?
在sbt键入内容testOnly并tab按键后,我将获得所有可用的测试:
sbt:plugger> testOnly
-- com.sweetsoft.detector.DetectorSpec com.sweetsoft.sender.SenderMessageSpec
Run Code Online (Sandbox Code Playgroud)
是否有命令获取所有可用的测试,而不是tab按键?