I am trying to understand the language extension OverloadedStrings from the page <https://ocharles.org.uk/posts/2014-12-17-overloaded-strings.html>. 

When the OverloadedStrings is enabled, then `String` becomes a type `Data.String.IsString a => a`: 

```
Prelude Data.String> :t fromString "Foo"
fromString "Foo" :: IsString a => a 

```

In the description, the author has mentioned the following: 

> 
> By enabling this extension, string literals are now a call to the
>  fromString function, which belongs to the IsString type class.
> 
> 
> 

What does `string literals are now a call to the fromString function` ? 

and also the author has mentioned: 

> 
> This polymorphism is extremely powerful, and it allows us to write
>  embedded domain specific languages in Haskell source code, without
>  having to introduce new constructs for otherwise normal values.
> 
> 
> 

what does `without having to introduce new constructs for otherwise normal values` mean?