我想要一个接收列表并索引所有内容的函数:indexed :: [a] -> [(Int, a)].或者返回的值可以是Monad,只要它包含原始列表的索引值即可.
我认为在处理每个元素时我需要StateT来临时记住和索引索引号,但我不熟悉Monad变换器的东西,我需要一些帮助来编写函数.
我相信它看起来与此相似(这肯定不起作用):
indexed ns = do
n <- ns
i <- get
put (i + 1)
return (i, n)
Run Code Online (Sandbox Code Playgroud)
你会怎么写的?
我的主函数有一个无限循环,我想每100毫秒执行一次它的循环.我知道它是由一些并发或并行方法完成的,但我以前从未做过这样的事情,甚至不知道从哪里开始.你会如何实现这样的功能?
我收到此错误:
Could not find module ‘Data.Binary’
It is a member of the hidden package ‘binary-0.7.5.0@binar_IvYoLp9H6Xy3zEH13MmZwd’.
Run Code Online (Sandbox Code Playgroud)
当我Data.Binary使用GHCi版本7.10.2 导入我的堆栈项目时.
奇怪的是,如果我执行GHCi,这不会出现stack exec ghci,并且我无法binary通过堆栈安装更新版本的包,它看起来:
D:\p>stack install binary
Setting codepage to UTF-8 (65001) to ensure correct output from GHC
NOTE: the install command is functionally equivalent to 'build --copy-bins'
D:\p>stack install binary-0.7.6.1
Setting codepage to UTF-8 (65001) to ensure correct output from GHC
NOTE: the install command is functionally equivalent to 'build --copy-bins'
Error parsing targets: Specified target version …Run Code Online (Sandbox Code Playgroud) 我试着收集一个密封班的孩子们:
import scala.reflect.macros.blackbox.Context
import scala.language.experimental.macros
object Enum {
def values[A]: Seq[A] = macro EnumImpl.values[A]
class EnumImpl(val c: Context) {
import c.universe._
implicit class SymbolOp(s: Symbol) {
def asSealedClass = s.asClass.ensuring(_.isSealed, s"$s is not sealed")
def asCaseClass = s.asClass.ensuring(_.isCaseClass, s"$s is not a case class")
}
def values[A: c.WeakTypeTag]: c.Expr[A] = {
val enumSymbol = weakTypeOf[A].typeSymbol.asSealedClass
val elemSymbols = enumSymbol.knownDirectSubclasses.toList
val elemIdents = elemSymbols.map(s => Ident(s.asCaseClass))
val elemSeqSymbol = weakTypeOf[Seq[A]].typeSymbol
c.Expr(Apply(Ident(elemSeqSymbol.companion), elemIdents))
}
}
}
Run Code Online (Sandbox Code Playgroud)
我测试了这个:
sealed trait Foo
case object …Run Code Online (Sandbox Code Playgroud) 有ClassSymbolApi#primaryConstructor,但我需要该类可能包含的每个主要/辅助构造函数.你怎么做呢?谢谢!