Elasticsearch DSL 查询实战:Haskell 语言下的搜索引擎应用
Elasticsearch 是一个基于 Lucene 的开源搜索引擎,它提供了强大的全文搜索功能,并且可以通过 Elasticsearch DSL(Domain Specific Language)进行复杂的查询操作。Haskell 是一种纯函数编程语言,以其强大的类型系统和并发特性而闻名。本文将探讨如何在 Haskell 中使用 Elasticsearch DSL 进行查询,并通过实际案例展示其应用。
环境准备
在开始之前,我们需要准备以下环境:
1. 安装 Elasticsearch:可以从 [Elasticsearch 官网](https://www.elastic.co/cn/elasticsearch/) 下载并安装。
2. 安装 Haskell:可以从 [Haskell 官网](https://www.haskell.org/) 下载并安装。
3. 安装 Elasticsearch Haskell 客户端库:可以使用 `cabal` 或 `stack` 来安装 `elasticsearch` 包。
bash
cabal install elasticsearch
或
bash
stack build
Elasticsearch DSL 简介
Elasticsearch DSL 允许用户使用类似 SQL 的语法来构建查询。它支持多种查询类型,包括:
- Term 查询:基于精确值进行搜索。
- 短语查询:基于短语进行搜索。
- 全文查询:基于全文进行搜索。
- 范围查询:基于数值范围进行搜索。
- 复合查询:组合多个查询。
Haskell 中的 Elasticsearch DSL
在 Haskell 中,我们可以使用 `elasticsearch` 包来构建和执行 Elasticsearch DSL 查询。以下是一个简单的示例,展示如何在 Haskell 中构建一个基本的查询:
```haskell
import qualified Data.Aeson as Aeson
import qualified Data.Text as Text
import qualified Network.HTTP.Client as HTTP
import qualified Network.HTTP.Client.TLS as TLS
import qualified Data.ByteString.Lazy as BL
import qualified Data.Either as Either
import qualified Data.List as List
import qualified Data.Map as Map
import qualified Data.Set as Set
import qualified Data.Time as Time
import qualified Data.Time.Clock as Time
import qualified Data.Time.Clock.POSIX as Time.POSIX
import qualified Data.Time.Format as Time.Format
import qualified Data.Time.LocalTime as Time.LocalTime
import qualified Data.Time.LocalTime.TimeZone as Time.TimeZone
import qualified Data.Time.LocalTime.TimeZoneDB as Time.TimeZoneDB
import qualified Data.Time.LocalTime.TimeZoneInfo as Time.TimeZoneInfo
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZone as Time.TimeZoneInfo.TimeZone
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneName as Time.TimeZoneInfo.TimeZoneName
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB as Time.TimeZoneInfo.TimeZoneNameDB
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDB as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDB
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry as Time.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
import qualified Data.Time.LocalTime.TimeZoneInfo.TimeZoneNameDB.TimeZoneNameDBEntryEntryEntryEntryEntryEntryEntryEntryEntryEntry
Comments NOTHING