In Java, the Checker Framework (http://types.cs.washington.edu/checker-framework/) provides a way to type check string literals. For example, Java signatures type system differentiates strings literals in different forms:

1. Unqualified strings : 
"Hello, world!" -> @Unqualified String

2. Fully qualified names: 
"package.Outer.Inner" -> @FullyQualifiedString String

3. Binary names: 
"package.Outer$Inner" -> @BinaryName String

4. Field descriptors: 
"Lpackage/Outer$Inner;" -> @FieldDescriptor String

It can do the similar checks with regular expressions or SQL statements.

Is it possible to type check string literals in Haskell? I think it would be nice if we can check if a given string literal is a valid URL or an email address at compile time.

Regards,
Kwang Yul Seo