Интересный DSLs, реализованный в Scala? [закрытый]

15
задан skaffman 6 July 2010 в 13:54
поделиться

6 ответов

У вас есть хороший источник в книге MEAP (Early Access)
Gosh Cover
DSL в действии от Debasish Ghosh (блог: «Ruminations of a programmer)

Тестовые фреймворки, такие как scalatest, являются классическими примерами DSL:

  test("pop is invoked on an empty stack") {     
    val emptyStack = new Stack[String]
    evaluating { emptyStack.pop() } should produce [NoSuchElementException]
    emptyStack should be ('empty)
  }

Существует много других ФРЕЙМВОРКОВ на основе DSL:

  • specs: "Behavior-Driven-Design framework"

  • internal DSLs

  • Squeryl: "Scala ORM и DSL для общения с базами данных с минимальной детализацией и максимальной безопасностью типа"

    def songCountByArtistId: Query[GroupWithMeasures[Long,Long]] =
      from(artists, songs)((a,s) =>
        where(a.id === s.artistId)
        groupBy(a.id)
        compute(count)
      )
19
ответ дан 1 December 2019 в 02:18
поделиться

lift-json предоставляет DSL для генерации JSON. Например, следующий DSL:

("person" ->
  ("name" -> "Joe") ~
  ("age" -> 35) ~
  ("spouse" ->
    ("person" ->
      ("name" -> "Marilyn") ~
      ("age" -> 33)
    )
  )
)

создает следующий JSON:

{ 
  "person": {
    "name": "Joe",
    "age": 35,
    "spouse": {
      "person": {
        "name": "Marilyn",
        "age": 33
      }
    }
  }
}
6
ответ дан 1 December 2019 в 02:18
поделиться

Два хороших примера - встроенные DSL для парсерных комбинаторов и акторов. Существует обертка для SQL под названием DBC (еще не готова), здесь вы можете увидеть, как она выглядит: http://scala.sygneca.com/libs/dbc

1
ответ дан 1 December 2019 в 02:18
поделиться

В статье ScalaQL (PDF) описывается реализация интересного DSL для интегрированных в язык запросов к базе данных.

0
ответ дан 1 December 2019 в 02:18
поделиться

XML в Scala - еще один пример.

1
ответ дан 1 December 2019 в 02:18
поделиться

ScalaModules - это DSL для работы с OSGi .

Еще один доступен с Apache Camel , платформой для корпоративной интеграции.

Scala-Query и Squeryl , помимо прочего, также предоставляют DSL для запросов к базам данных.

ScalaTest также является прекрасным примером того, что возможно.

2
ответ дан 1 December 2019 в 02:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: