小编Tra*_*own的帖子

得到电话课

我想得到一个宏的调用类,但我的代码不起作用:

def __CLASS__(c: Context) = {
    import c.universe._
    c.enclosingClass match {
    case ClassDef(mods, name, tparams, impl) =>
    c.universe.reify(println(
            "\n  mods "+c.literal(mods.toString).splice
            +"\n  name "+c.literal(name.toString).splice
            +"\n  tparams "+c.literal(tparams.toString).splice
            +"\n  impl "+c.literal(impl.toString).splice
            ))
    case _ => c.abort(c.enclosingPosition, "NoEnclosingClass")
    }
}
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助.

scala scala-2.10 scala-macros

4
推荐指数
1
解决办法
719
查看次数

一种不寻常的签名

Monads中,对于自然语言语义学,Chung-Chieh Shan展示了如何使用monad来对一些不同类型的自然语言现象(疑问,焦点,内涵和量化)的标准叙述进行非常均匀的重述.他定义了两个组合操作,A_M并且A'_M对此有用.

第一个是简单的ap.在powerset中monad ap是非确定性函数应用程序,它对于处理疑问句的语义很有用; 在读者monad中,它对应于拉伸成分的通常分析; 等等

这是有道理的.但是,辅助合成操作的类型签名对我来说很奇怪:

(<?>) :: (Monad m) => m (m a -> b) -> m a -> m b
Run Code Online (Sandbox Code Playgroud)

(Shan称之为A'_M,但我会<?>在这里称之为.)定义是你对类型的期望; 它非常接近ap:

g <?> x = g >>= \h -> return $ h x
Run Code Online (Sandbox Code Playgroud)

我想我可以理解这是如何在论文的背景下做到的(处理疑问句的问题动词,作为内容构成等).它的作用并不是非常复杂,但看到它在这里扮演如此重要的角色有点奇怪,因为它不是我之前在Haskell中看到的成语.

Hoogle没有任何有用的东西m (m a -> b) -> m a -> m b或者m (a -> b) -> a -> m b.

这看起来对其他任何人来说都很熟悉吗?你有没有写过这个功能?

monads haskell types semantics

3
推荐指数
1
解决办法
412
查看次数

通用类的scala宏泛型字段不应用类泛型类型参数

通用案例类

case class GroupResult[T](
  group: String,
  reduction: Seq[T]
)
Run Code Online (Sandbox Code Playgroud)

宏观方法

 def foo[T] = macro fooImpl[T]

 def fooImpl[T: c.WeakTypeTag](c: Context) = {
    import c.universe._
    val tpe = weakTypeOf[T]
     tpe.declarations.collect {
      case m: MethodSymbol if m.isCaseAccessor => println(m.returnType)
    }
    c.literalUnit
  }
Run Code Online (Sandbox Code Playgroud)

当我调用 foo[GroupResult[Int]]

输出是

String
Seq[T]
Run Code Online (Sandbox Code Playgroud)

T不适用?我怎样才能获得申请Seq[Int]

generics macros scala scala-macros

3
推荐指数
1
解决办法
566
查看次数

避免使用 Circe json 序列化器序列化为 null

如何避免使用 Circe json 序列化器将 None 序列化为 null?我无法强制该库跳过“无”的序列化字段。有可能实现吗?

json scala circe

3
推荐指数
1
解决办法
1987
查看次数

身体质量指数计划在Haskell

我试着写在Haskell一个简单的程序,它可以决定一个人的身体质量指数.

这是我写的:

type Height = Float
type Weight = Float
type PeopleStats = [(String, Height, Weight)]
Run Code Online (Sandbox Code Playgroud)

和...

bmi :: Height -> Weight -> Float
bmi heightCm weightKg = weightKg/(heightCm)^2

healthy :: Height -> Weight -> Bool
healthy heightCm weightKg | 25 > index && 18 < index = True
                          | otherwise                = False
  where index = bmi heightCm weightKg
Run Code Online (Sandbox Code Playgroud)

到目前为止,"健康"功能可以计算某人的BMI,并且功能"healthyPeople"返回一个布尔语句,确定该人的BMI是否落入健康人认为正常的限度内.

我想写一个名为"healthyPeople"的函数.

healthyPeople :: PeopleStats -> [String]
Run Code Online (Sandbox Code Playgroud)

此函数需要获取PeopleStats列表并返回"健康"功能中被视为"健康"的人的名称(字符串)列表.

例如:

如果我输入,[("Lee", 65, 185), ("Wang", 170, 100), ("Tsu", 160, 120)]我将获得一个BMI返回true的人名的列表,形成"健康"中的布尔函数.

请帮忙 …

haskell

1
推荐指数
1
解决办法
778
查看次数

Mesos框架

我想通过使用java和定义依赖关系在集群上分发Docker容器,这样当一个容器完成时,我可以在我的java代码中解析生成的输出.有许多mesos框架可以实现这一点,我不确定采取哪一个:Marathon,Singularity,Chronos,Aurora.

到目前为止我学到了什么:

Marathon有一个非常好的java客户端api,但用于长期任务(不知道这是否是一个问题,因为我的任务不会运行那么久)我不认为我可以定义那种依赖.如果我使用马拉松,我将不得不轮询应用程序的状态.Chronos没有java api(至少我找不到).所以我可以选择Aurora和Singularity.

任何人都可以帮我推荐其中一个用于我的用例.

java marathon mesos aurora

1
推荐指数
1
解决办法
974
查看次数

是否可以让半自动解码器考虑案例类字段的默认值?

是否可以让半自动解码器考虑案例类字段的默认值?

以下代码将失败:

Left(DecodingFailure(Attempt to decode value on failed cursor, List(DownField(isActive))))

我认为 circe 会考虑 case class 字段的默认值 isActive

case class Person(
  id: Option[Int] = None,
  name: String,
  isActive: Boolean = true
)

implicit val personJsonDecoder: Decoder[Person] = deriveDecoder

val rawJson = """
{
  "name": "Geovanny Junio"
}
"""

val r = for {
  j <- parse(rawJson)
  p <- j.as[Person]
} yield p

println(r)
Run Code Online (Sandbox Code Playgroud)

json scala circe generic-derivation

1
推荐指数
1
解决办法
576
查看次数