我正在尝试为简单的键/值对创建一个类型,可以将其转换为URL查询。所以我创建了以下ADT:
data Target where
(:=>) :: String -> String -> Target
instance Show Target where
show (a :=> b) = a ++ "=" ++ b
showList (xs) = (\y -> intercalate "&" $ map show xs)
当我在ghci中运行它时,它正是我想要的:
ghci>["id" :=> "123", "color" :=> "red"]
id=123&color=red
it :: [Target]
我的问题是:为什么我需要showList
中的lambda?我试着show y
,它只打印一个空字符串。当参数为空时返回ShowS
的目的是什么?或者可能是一个更好的问题,在这种情况下应用的showS
函数是什么?
答案 0 :(得分:1)
scalaVersion := "2.11.6"
lazy val akkaVersion = "2.3.13"
lazy val scalaTestVersion = "2.2.4"
lazy val specs2Version = "3.6"
libraryDependencies ++= Seq(
"com.typesafe.akka" %% "akka-actor" % akkaVersion,
"com.typesafe.akka" %% "akka-testkit" % akkaVersion % "test",
"org.scalatest" %% "scalatest" % scalaTestVersion % "test",
"org.specs2" %% "specs2-core" % specs2Version
)
以允许通过组合优化串联和串联。有关ShowS
。
对于您的示例,您可能希望保留串联优势,而不是忽略ShowS
:
y