用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/cxcscmu/SkillLearnBench --skill scala-functional-builders命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
基于 SOC 职业分类
| name | scala-functional-builders |
| description | Guide for creating functional fluent builders in Scala. |
Python's fluent builder pattern often mutates internal state (self._validators.append(...)). In Scala, it is idiomatic to use immutable case classes that return copies of themselves with updated state. However, a mutable builder is also acceptable for exact translations or performance optimizations.
case class TokenizerBuilder[T](
normalizers: List[String => String] = Nil,
validators: List[T => Boolean] = Nil,
metadata: Map[String, Any] = Map.empty
) {
def withNormalizer(n: String => String): TokenizerBuilder[T] =
this.copy(normalizers = normalizers :+ n)
def withValidator(v: T => Boolean): TokenizerBuilder[T] =
this.copy(validators = validators :+ v)
def withMetadata(md: (String, Any)*): TokenizerBuilder[T] =
this.copy(metadata = metadata ++ md)
def build(): T => Token = { value =>
// Run validators
if (!validators.forall(v => v(value))) {
throw new IllegalArgumentException(s"Validation failed for $value")
}
// Process and return token
val strValue = normalizers.foldLeft(value.toString)((acc, n) => n(acc))
Token(strValue, TokenType.STRING, metadata)
}
}
This cleanly maps to Python's generic generic builder pattern, using Scala 2.13 collections like List and Map.