【发布时间】:2023-04-07 12:44:02
【问题描述】:
我正在尝试在 Clojure 项目中使用 Scala 库,但遇到了一些问题。您将如何在 Clojure 中实现以下 Scala 代码?
object LabelDomain extends CategoricalDomain[String]
class Label(val token: Token, s: String) extends LabeledCategoricalVariable(s) {
def domain = LabelDomain
}
object FeaturesDomain extends CategoricalDimensionTensorDomain[String]
class Features(val token: Token) extends BinaryFeatureVectorVariable[String] {
def domain = FeaturesDomain
}
object model extends ChainModel[Label, Features, Token](
LabelDomain,
FeaturesDomain,
l => l.token.attr[Features],
l => l.token,
t => t.attr[Label])
CategoricalDomain 和 CategoricalDimensionTensorDomain 是特征。
LabeledCategoricalVariable 和 BinaryFeatureVectorVariable 是抽象类。
ChainModel 是一个类。
【问题讨论】:
-
从库互操作性的角度来看,我不得不怀疑 Scala 与 Clojure 的匹配度有多好。另外……我认为您需要多说一下示例中定义的各种名称 - 它非常稀疏。
-
@RandallSchulz 我更新了帖子以更具体地说明所涉及的类型。
-
也许这个问题可以大大简化?术语(“分类”、“tensor”、“域”等)可能会吓跑人们,即使它们与问题无关。
-
繁重的 OO 代码不适合 Clojure(当然,它仍然可行),也许您应该在 Scala 中进行。 Clojure 更关注数据,而 Scala 更关注类型。
标签: scala clojure clojure-java-interop