问题标签 [kind-projector]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - 什么是投影仪
我一直在深入研究 FP 和它周围的一切,我发现在某处写有实物投影仪的概念,没有细节也没有解释。
我唯一找到的是这个github 项目,我开始思考它是指这个特定的项目,还是指 FP 中的一些通用概念?
那么,什么是实物投影仪?为什么有用?(如果可能,您能否提供示例、资源等?)
scala - Scala中具有两个参数的类型构造函数的函子实例
我有一个Foo
有两个参数的类,我正在尝试为 Foo 编写一个 Functor 实例,其中第一个参数是固定的,如下所示:
但是上面的代码编译失败,产生如下错误:
我知道 Scalaz 对他们的\/
类型做了类似的事情,但是检查他们的源代码会发现一个奇怪的?
,它不能为我编译:
Scalaz 是如何?
工作的,我该如何编写 Functor 实例Foo
?
scala - 问号是什么意思?
我有以下代码功能:
并想知道,问号是什么意思?它来自图书馆https://github.com/non/kind-projector。
scala - 种类编译器插件 λ 未找到
我已经启用了 kind 编译器插件addCompilerPlugin("org.spire-math" % "kind-projector" % "0.9.6")
,我现在可以使用?
符号,例如Map[String, ?]
,但是 Lambda 和 λ 没有解析。
val f: Id ~> Future = λ[Id ~> Future](...)
产生Error: not found: value λ
. kind 编译器仍然支持 λ 吗?
scala - 在 scalaz 中将函数提升到 ~>
我有以下类型和声明:
Container ~> Id
有可能升到FreeContainer ~> Id
吗?
scala - 类型 lambdas 中断隐式解析
有人可以解释这种行为并提供解决方法吗?Scala 2.12.7, kind-projector 0.9.8, scalacOptions += "-Ypartial-unification"
scala - 如何在 Bazel 中定义 scala 编译器插件?
目前,我将 rules_scala 与 sbt-bazel 结合使用来尝试从 sbt 转换为 bazel。
我目前遇到了在构建期间未使用“kind-projector”插件的问题。
IE。compilerPlugin("org.spire-math" % "kind-projector" % "0.9.8")
有没有人有在 Bazel 中使用 scalac 插件的经验?
scala - 带有种类投影仪的 Scala 中的部分应用类型 lambda
考虑以下类型定义:
当在上下文边界中提供这种类型的隐式要求时(使用 kind 投影仪插件),我们必须这样写:
我想去掉这?[_]
部分,所以我最初的猜测是写一个To[G[_]]
返回的类型,LiftF[?[_], G]
以便将上面的函数定义转换为
但是,当将类型To
定义写为
我收到以下编译错误:
尝试用存在类型重写它会产生以下类型定义:
这编译得很好,但不出所料,不能应用于其他类型参数,因此无法实现所需的函数定义。
我设法用受 aux 模式启发的代码实现了“部分应用程序”部分:
可悲的是,这给我留下了可以说比原始语法更糟糕的语法:
我的问题是 - 我可以在实物投影仪的帮助下在 Scala 中实现最初提出的语法,还是应该坚持使用?[_]
?
scala - Why does Option[Try[_]] not conform to F[_]?
So having something like this:
I now want to do something like this:
(Same thing if I declare the trait extension as class TryOptWrapper extends IntWrapper[Try[Option[_]]]
)
Now, perhaps the most interestingly, this works:
Now, is it possible to do the same thing – i.e. implement a trait with a type parameter being a nested parametrized type – without having to explicitly declare the type alias? It definitely feels like I'm missing some syntax here.
scala - 测试中*的含义是什么?
在猫的测试中,*
作为类型参数出现,例如,这里:
(见https://github.com/typelevel/cats/blob/master/tests/src/test/scala/cats/tests/NestedSuite.scala#L19)
我知道编译器会将其转换为类型级别的函数,但为什么呢?它在哪里定义?它是语言规范的一部分还是猫的一部分(或它的依赖项之一)?